我有一个字符串,我将此字符串转换为字节数组以发送tcp设备。
byte[] loadRegionCommand=System.Text.Encoding.Unicode.GetBytes("$RGNLOAD http://1.1.1.1:9999/region1.txt");
System.Text.Encoding.Unicode.GetBytes()
方法在每个字符后添加一个零。但是我的设备可能不接受unicode,我可以使用什么代替System.Text.Encoding.Unicode.GetBytes()。
感谢您的帮助和最好的想法。
答案 0 :(得分:1)
但
System.Text.Encoding.Unicode.GetBytes()
方法在每个字符后添加零。
是的,因为Unicode 16位,这正是你所要求的。
使用Encoding.UTF8.GetBytes()
或甚至Encoding.ASCII
。这取决于您的设备所期望的。
答案 1 :(得分:1)
您正在使用UnicodeEncoding
。 unicode字符串字符串的字符大小为两个字节。由于您使用的是仅在ASCII范围内的输入字符,因此高位字节始终为零。数据存储在小端,因此首先写入低位字节。因此你的结果。
您可以根据输入选择不同的编码。如果您的所有字符都是ASCII,请使用ASCIIEncoding
。如果必须每个字符使用一个字节并且您具有ASCII范围之外的字符,请使用相应的代码页。否则,您可以使用UTF8Encoding
,它将对一个字节中的所有ASCII字符进行编码,将所有其他字符编码为两个或更多字节(最多四个)。