我有一個關於將字節數組與空值轉換爲C#字符串的問題。 這是我想轉換爲字符串的字節數組的示例。 我期望能獲得與價值SHKV
[0]: 83
[1]: 0
[2]: 72
[3]: 0
[4]: 75
[5]: 0
[6]: 86
[7]: 0
我怎麼能做到這一點在C#中的字符串?
感謝, MK
我有一個關於將字節數組與空值轉換爲C#字符串的問題。 這是我想轉換爲字符串的字節數組的示例。 我期望能獲得與價值SHKV
[0]: 83
[1]: 0
[2]: 72
[3]: 0
[4]: 75
[5]: 0
[6]: 86
[7]: 0
我怎麼能做到這一點在C#中的字符串?
感謝, MK
你真的需要知道原始編碼,以便將其成功轉換。
我懷疑,在這種情況下,編碼可能是UTF-16,您可以按如下轉換:
byte[] yourByteArray = new byte[] { 83, 0, 72, 0, 75, 0, 86, 0 };
string yourString = Encoding.Unicode.GetString(yourByteArray));
Console.WriteLine(yourString); // SHKV
假設ASCII字節,你可以使用LINQ:
new string(bytes.Where(b => b != 0).Select(b => (char)b).ToArray());
不過,我懷疑你想謬以千里Unicode數據。
不要。請使用Encoding
class。你
string str = new ASCIIEncoding().GetString(bytes.Where(i => i != 0).ToArray());
也可以使用UnicodeEncoding
,UTF32Encoding
,UTF7Encoding
或UTF8Encoding
使用LINQ語法:
var chars =
from b in byteArray
where b != 0
select (char) b;
string result = new String(chars.ToArray());
雖然你最好選擇正確的編碼相反,正如其他人所說的那樣。
這看起來像小尾數UTF-16,所以:
string s = Encoding.Unicode.GetString(data);
你保證總是看到字符串(字符,空,焦炭,空,等等)的這種編碼?如果是這樣,則可以簡單地使用Unicode字符串編碼器對其進行解碼:
Byte[] contents = new Byte[] {83, 0, 72, 0, 75, 0, 86, 0};
Console.WriteLine(System.Text.Encoding.Unicode.GetString(contents));
字節[] B =新的字節[] {83,0,72,0,75,0,86,0};
System.Text.Encoding.Unicode.GetString(b);