C#-如何将字节从StringBuilder移动到字节数组

本文关键字:StringBuilder 移动 到字节 数组 字节 C#- | 更新日期: 2023-09-27 18:28:00

用于USB通信的dll读取数据并将其放入StringBuilder实例bRx中。bRx中的数据字节如何移动到字节缓冲区,最终写入文件?

C#-如何将字节从StringBuilder移动到字节数组

它可能因字符串的编码方式/中存储的内容而异

但试试这个:

byte[] b = System.Text.Encoding.UTF8.GetBytes(sb.ToString());

byte[] b = System.Text.Encoding.ASCII.GetBytes(sb.ToString());

请参阅关于字符串的SO线程,该线程应适用于StringBuilder:

如何在不手动指定编码的情况下获得C#中字符串的一致字节表示?

如果使用Append(byte value)添加,我认为需要一个分隔符。微软有一个" "-http://msdn.microsoft.com/en-us/library/86yy043k(v=vs.110).aspx

我准备了一个更适合您需求的例子:

const char separator = ';';
byte[] inputBytes = { 255, 16, 1 };
StringBuilder sb = new StringBuilder();
foreach (byte b in inputBytes)
    sb.Append(b).Append(separator);
// remove a separator in a tail
sb.Remove(sb.Length - 1, 1);

var byteArrayActual = sb.ToString()
        .Split(separator)
        .Select(x => byte.Parse(x))
        .ToArray();
Debug.Assert(Enumerable.SequenceEqual(inputBytes, byteArrayActual));

执行上述代码后,会有相同的数组(作为初始数组)准备保存到文件中:Byte[] (3 items) 255 16 1