我正在使用dataFrame.customMethod()
将字符串转换为字节,但它总是会添加一个Encoding.Unicode.GetBytes()
。这里我的代码是
zero
将结果显示为
Dim StringBytes As Byte() = Encoding.Unicode.GetBytes("s")
另一个例子:
115
0
将结果显示为
Dim StringBytes As Byte() = Encoding.Unicode.GetBytes("mm")
为什么总是添加这个零?
答案 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.)