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格式的编码”。