就如同浮點數轉換會出現精度丟失一樣,字節與字符串的轉換也會出現自作聰明的結局,雖然看起來一樣,但未必 是你喜歡的那個人了
var bs = new byte[16]
{
120,
104,
0,
0,
0,
0,
0,
0,
32,
65,
57,
16,
132,
54,
151,
87
};
string s = Encoding.UTF8.GetString(bs);
var cs = Encoding.UTF8.GetBytes(s);
Console.WriteLine(s);
Console.WriteLine(Encoding.UTF8.GetString(cs));
Console.WriteLine(BitConverter.ToString(bs).Replace("-"," "));
Console.WriteLine(BitConverter.ToString(cs).Replace("-", " "));
Console.WriteLine(BitConverter.ToString(Encoding.ASCII.GetBytes(Encoding.ASCII.GetString(bs))).Replace("-", " "));
@@@
輸出結果
xh?????? A9?6?W
xh?????? A9?6?W
78 68 00 00 00 00 00 00 20 41 39 10 84 36 97 57
78 68 00 00 00 00 00 00 20 41 39 10 EF BF BD 36 EF BF BD 57
78 68 00 00 00 00 00 00 20 41 39 10 3F 36 3F 57
@@@