C# 将字节数组转换为按特定字节分割的字符串

问题描述 投票:0回答:1

如果这是个愚蠢的问题,我很抱歉。但我真的无法弄清楚这一点,而且我敢打赌它一定比我想象的要简单得多。

我有一个

byte[]
数组,其中包含多个Unicode字符串,每个字符明显占用2个字节,每个字符串由两个00 00字节分隔,直到双00 00标志着这一切的结束。

当我尝试使用

UnicodeEncoding.Unicode.GetString(myBuffer)
时,我确实得到了第一个字符串,但是当找到分隔符字节时,它开始到处都是垃圾。

现在我正在逐字节解析,然后连接事物,但我确信必须有更好的方法。

我想知道是否应该尝试找到分隔符字节的“位置”,然后将

GetString
方法限制为该借出?但如果是这样,你如何找到 2 个字节数组中 2 个特定字节的位置?

示例字节数组如下所示:

Hex View
 
00000000  73 00 74 00 72 00 31 00  00 00 73 00 74 00 72 00  s.t.r.1...s.t.r.
00000010  32 00 00 00 73 00 74 00  72 00 33 00 00 00 00 00  2...s.t.r.3.....
c# arrays unicode-string
1个回答
0
投票

Encoding.Unicode.GetString(myBuffer)
实际上会正确解码整个缓冲区,但它会在其中嵌入 NUL 字符来分隔每个子字符串。

解码后按

\0
分割,即可得到所有子串:

foreach(var str in Encoding.Unicode.GetString(myBuffer).Split('\0'))
    Console.WriteLine(str);
© www.soinside.com 2019 - 2024. All rights reserved.