我使用Encoding.Unicode.GetBytes()
将字符串转换为字节,但它总是添加额外的zero
。这里我的代码是
Dim StringBytes As Byte() = Encoding.Unicode.GetBytes("s")
给出结果
115
0
另一个例子:
Dim StringBytes As Byte() = Encoding.Unicode.GetBytes("mm")
给出结果
109
0
109
0
为什么总是加0 ?
。Net使用Unicode UTF16(以小端字节顺序)作为Encoding.Unicode.GetBytes()
类型返回的值,并且UTF16为每个常规字符使用2个字节。(string
类型也使用UTF16)
对于2个m,你得到4个字节,每个m是109和0。
您看到的0
不是null终止符。它是字符代码的一部分。
(注意,对于ASCII字符,UTF16表示将高字节设置为0,低字节设置为字符的ASCII码。m
的ASCII码是109