我的Tcp设备不接受unicode

时间:2017-10-04 08:11:01

标签: c#

我有一个字符串,我将此字符串转换为字节数组以发送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()。

enter image description here

感谢您的帮助和最好的想法。

2 个答案:

答案 0 :(得分:1)

  

System.Text.Encoding.Unicode.GetBytes()方法在每个字符后添加零。

是的,因为Unicode 16位,这正是你所要求的。

使用Encoding.UTF8.GetBytes()或甚至Encoding.ASCII。这取决于您的设备所期望的。

答案 1 :(得分:1)

您正在使用UnicodeEncoding。 unicode字符串字符串的字符大小为两个字节。由于您使用的是仅在ASCII范围内的输入字符,因此高位字节始终为零。数据存储在小端,因此首先写入低位字节。因此你的结果。

您可以根据输入选择不同的编码。如果您的所有字符都是ASCII,请使用ASCIIEncoding。如果必须每个字符使用一个字节并且您具有ASCII范围之外的字符,请使用相应的代码页。否则,您可以使用UTF8Encoding,它将对一个字节中的所有ASCII字符进行编码,将所有其他字符编码为两个或更多字节(最多四个)。