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

本文关键字:一个 返回 Encoding Unicode GetBytes 为什么 | 更新日期: 2023-09-27 18:12:52

我使用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 ?

为什么Encoding.Unicode.GetBytes()返回一个额外的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