我通过网络收到了一个Unicode消息,它看起来像这样:
74 00 65 00 73 00 74 00 3F 00
我正在使用BinaryReader从套接字读取流,但问题是它没有提供“ReadWideString”函数或类似的函数。有人有处理这个问题的想法吗?
谢谢!
简单!
string str = System.Text.Encoding.Unicode.GetString(array);
其中array
是您的字节数组。
C#中的字符串默认为Unicode编码。尝试:
string converted = Encoding.Unicode.GetString(data);
如果你的数据是以大端字节序存储的,你可以尝试使用 byte[] 数组来包含 Unicode 数据。
string converted = Encoding.BigEndianUnicode.GetString(data);
StreamReader
:StreamReader sr = new StreamReader(stream, Encoding.Unicode);
StreamReader
比BinaryReader
更合适。如果您的字符串嵌入在二进制数据中,则最好使用Encoding.GetString
方法对字符串进行解码,正如其他人所建议的那样。