C#-如何将字节从StringBuilder移动到字节数组
本文关键字:StringBuilder 移动 到字节 数组 字节 C#- | 更新日期: 2023-09-27 18:28:00
用于USB通信的dll读取数据并将其放入StringBuilder实例bRx中。bRx中的数据字节如何移动到字节缓冲区,最终写入文件?
它可能因字符串的编码方式/中存储的内容而异
但试试这个:
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
。