我有一个从外部实体接收的字节数组。它是固定大小的。这些字节包含一个 unicode 字符串,用 0 值填充缓冲区的其余部分:
所以字节可能是:
H \0 E \0 L \0 L \0 \0 \0 \0 \0 \0 ... etc
我正在获取该缓冲区并将其转换为字符串,如下所示:
byte[] buffer = new byte[buffSize];
m_dataStream.Read(buffer, 0, buffSize);
String cmd = System.Text.Encoding.Unicode.GetString(buffer);
我返回的是一个如下所示的字符串:
"HELLO\0\0\0\0\0\0\0\0..."
如何告诉 GetString 在第一个 Unicode null 处终止字符串(即我只返回“HELLO”)?
感谢您的任何意见。
最佳答案
如果你确定其余部分都是\0,那么这会起作用:
cmd = cmd.TrimEnd('\0');
否则,如果您只想获取第一个 null 之前的所有内容:
int index = cmd.IndexOf('\0');
if (index >= 0)
cmd = cmd.Remove(index);
请注意,Unicode.GetString
将处理双\0。您应该只查找单个\0。
关于.net - 从 System.Text.Encoding.Unicode.GetString 获取以 null 结尾的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/864246/