gpt4 book ai didi

c# - 将字节数组中的 ASCII 转换为字符串

转载 作者:太空狗 更新时间:2023-10-30 00:19:36 24 4
gpt4 key购买 nike

我似乎在使用 C# 进行字符串转换时遇到了问题。我的应用程序收到了一个由 ASCII 字符串组成的字节数组(每个字符一个字节)。不幸的是,它在第​​一个位置也有一个 0。那么如何将此字节数组转换为 C# 字符串呢?以下是我尝试转换的数据示例:

byte[] exampleByteArray = new byte[] { 0x00, 0x52, 0x50, 0x4D, 0x20, 0x3D, 0x20, 0x32, 0x35, 0x35, 0x2C, 0x36, 0x30, 0x0A, 0x00 };
string myString = null;

我已经做了几次不成功的尝试,所以我想我会寻求帮助。最后我需要将字符串添加到列表框中:

listBox.Items.Add(myString);

列表框中所需的输出:“RPM = 255,630”(有或没有换行符)。字节数组将是可变长度的,但总是以 0x00 结束

最佳答案

byte[] exampleByteArray = new byte[] { 0x00, 0x52, 0x50, 0x4D, 0x20, 0x3D, 0x20, 0x32, 0x35, 0x35, 0x2C, 0x36, 0x30, 0x0A, 0x00 };
exampleByteArray = exampleByteArray.Where(x=>x!=0x00).ToArray(); // not sure this is OK with your requirements
string myString = System.Text.Encoding.ASCII.GetString(exampleByteArray).Trim();

结果:

RPM = 255,60

你可以将它添加到 listBox

listBox.Items.Add(myString);

更新:

根据新评论字节数组可以在尾随 0x00 之后包含垃圾(先前字符串的残余)。

您需要先跳过0x00,然后再考虑字节,直到您得到0x00,这样您就可以使用Linq 的强大功能来完成这项任务。例如 ASCII.GetString(exampleByteArray.Skip(1).TakeWhile(x => x != 0x00).ToArray())

关于c# - 将字节数组中的 ASCII 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18627304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com