将字节数组转换为C中的字符串#

问题描述:

我是C#的新手,我构建了一个应用程序,它接收来自串行端口的字节并解析字节。将字节数组转换为C中的字符串#

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

有了这个代码:

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

我获得字符串,但有一个问题:第一个字节的串行端口上接收是0×00(它表示一个ACK)。当我转换有效载荷(ack +字符串)时,第一个字符是NULL,文本框分配失败。

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

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

此外,在这种情况下,文本框分配失败。

我尝试跳过文本框中分配:

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

但也诠释这种情况下,编码失败。

任何建议找到错误?

在此先感谢。

+0

尝试'string base64 = Convert.ToBase64String(readData);' – mmushtaq

+0

这是什么意思“它失败”? – JeffRSon

+0

失败意味着赋值过程失败,代码达到catch语句。 – Federico

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

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

+0

谢谢帕维尔!有用!但是,文本框中的代理失败:这是我的字符串:“V2_1928608331 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0”。 – Federico

+1

我发现了这个问题。 C#意味着另一个线程尝试修改文本框。 – Federico