代码之家  ›  专栏  ›  技术社区  ›  Federico

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

  •  1
  • Federico  · 技术社区  · 7 年前

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

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

    使用此代码:

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

    我获得了字符串,但存在一个问题:串行端口上接收的第一个字节是0x00(它表示ack)。当我转换有效负载(ack+字符串)时,第一个字符为空,文本框分配失败。

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

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

    在这种情况下,文本框分配也会失败。

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

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

    有没有发现错误的建议?

    提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Pavel Tupitsyn    7 年前

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

    最后一个参数是 count ,因此,如果从1开始,则计数必须小于1。