.net - 从 System.Text.Encoding.Unicode.GetString 获取以 null 结尾的字符串

标签 .net encoding arrays getstring

我有一个从外部实体接收的字节数组。它是固定大小的。这些字节包含一个 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/

相关文章:

.net - 如何使用开放XML检索Excel的文化信息?

c - GLib 将 GString 从 UTF-8 转换为 UTF-16/32 可能吗?

asp.net-mvc - URL 中的 Internet Explorer 西里尔符号参数

c++ - 如何用-1无循环初始化整个数组

php - 如何在循环外获取 Twig 数组中的键值

c# - 如何从 C# 更改 IIS 中应用程序池的用户名/密码?

.net - 在 .NET 应用程序中确定计算机名称的最佳方法是什么?

.net - 使用 LINQ 将数组数组组合成单个不同的数组

c# - 如何准确地将 sql 脚本插入到 Sql Server 表中

c# - 如果同一位置的所有数组元素都为真,如何得到真