【问题标题】:Convert byte array to string in C#在C#中将字节数组转换为字符串
【发布时间】:2018-03-20 08:20:03
【问题描述】:

我是 C# 新手,我构建了一个从串行端口接收字节并解析字节的应用程序。

在一种情况下,应用程序接收表示字符串的字节数组。我的想法是将字节转换为字符串并将字符串可视化为文本框。

使用此代码:

textSerialNumber.Text = Encoding.UTF8.GetString(readData.payload, 0, readData.payload.Length);

我得到了字符串但是有一个问题:串口接收到的第一个字节是 0x00 (它代表一个 ack )。当我转换有效负载(ack + string)时,第一个字符为 NULL 并且文本框分配失败。

如果我修改代码以从字节数组的第一个元素开始:

textSerialNumber.Text = Encoding.UTF8.GetString(readData.payload, 1, readData.payload.Length);

同样在这种情况下,文本框分配失败。

我尝试跳过文本框分配:

string x = Encoding.UTF8.GetString(readData.payload, 1, readData.payload.Length);

但在这种情况下,编码也会失败。

有什么建议可以找出错误吗?

提前致谢。

【问题讨论】:

  • 试试string base64 = Convert.ToBase64String(readData);
  • “失败”是什么意思?
  • Fails 表示赋值过程失败,代码到达 catch 语句。

标签: c# arrays string serial-port


【解决方案1】:

试试string x = Encoding.UTF8.GetString(readData.payload, 1, readData.payload.Length - 1);

最后一个参数是count,所以如果从 1 开始,count 必须少 1。

【讨论】:

  • 谢谢帕维尔!有用!但是文本框中的分配失败:这是我的字符串:“V2_1928608331\0\0\0\0\0\0\0\0\0\0\0\0\0”。
  • 我发现了问题。 C# 表示另一个线程尝试修改文本框。
猜你喜欢
  • 2018-01-26
  • 2017-12-11
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 2012-02-01
  • 2021-11-11
  • 1970-01-01
  • 2013-07-24
相关资源
最近更新 更多