为什么Encoding.Unicode.GetBytes()返回一个额外的0

时间:2015-09-15 12:06:43

标签: c# vb.net unicode encoding byte

我正在使用dataFrame.customMethod() 将字符串转换为字节,但它总是会添加一个Encoding.Unicode.GetBytes()。这里我的代码是

zero

将结果显示为

Dim StringBytes As Byte() = Encoding.Unicode.GetBytes("s")

另一个例子:

115
0

将结果显示为

Dim StringBytes As Byte() = Encoding.Unicode.GetBytes("mm")

为什么总是添加这个零?

1 个答案:

答案 0 :(得分:3)

.Net使用Unicode UTF16(以小端字节顺序)表示从Encoding.Unicode.GetBytes()类型返回的值,UTF16使用2个字节表示每个常规字符。 (UTF16也用于string类型。)

因此,对于2 m,你得到4个字节,每个m为109和0。

您所看到的0不是NUL终结者。它是字符代码的一部分。

(注意,对于ASCII字符,UTF16表示将高字节设置为0,将低字节设置为字符的ASCII代码。m的ASCII代码为109.)