C# Why Encoding.Unicode.GetBytes()返回额外的0

C# Why Encoding.Unicode.GetBytes()返回额外的0,c#,vb.net,unicode,encoding,byte,C#,Vb.net,Unicode,Encoding,Byte,我使用Encoding.Unicode.GetBytes()将字符串转换为字节,但它总是添加一个额外的zero。这是我的密码 Dim StringBytes As Byte() = Encoding.Unicode.GetBytes("s") 结果是 115 0 109 0 109 0 另一个例子: Dim StringBytes As Byte() = Encoding.Unicode.GetBytes("mm") 结果是 115 0 109 0 109 0 为什么总是添加此零?.

我使用
Encoding.Unicode.GetBytes()
将字符串转换为字节,但它总是添加一个额外的
zero
。这是我的密码

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

115
0
109
0
109
0
另一个例子:

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

115
0
109
0
109
0
为什么总是添加此零?

.Net使用(以小尾端字节顺序)作为从
编码.Unicode.GetBytes()
类型返回的值,并为每个常规字符使用2个字节。(UTF16也用于
字符串
类型。)

对于2M,你得到4个字节,每个m有109和0

您看到的
0
不是NUL终止符。这是字符代码的一部分

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

阅读后,您将理解上解释的短语“使用小尾端字节顺序获取UTF-16格式的编码”。