【问题标题】:String from SerialPort, convert to byte array then compare with other bytes来自 SerialPort 的字符串,转换为字节数组,然后与其他字节进行比较
【发布时间】:2016-09-06 10:18:37
【问题描述】:

我可以从串行端口获取从单个字节到最多 7 或 8 个字节的任何内容。现在这些字节以0x06(ACK)或0x15(NAK)等形式转为0x1A、0x56、0xF7、0x01、0xC3等字节流...

现在我的代码不再像这样了:

    private void mySerialPort_DataReceived (object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
        rxString = mySerialPort.ReadExisting();
        this.Invoke(new EventHandler(DisplayText));
    }

    private void DisplayText(object sender, EventArgs e)
    {
        byte[] bytes = Encoding.ASCII.GetBytes(rxString);

        tb_Status.Clear();

        if (bytes = (0x00, 0x00, 0x00, 0x06))
        {
           tb_Status.AppendText("Ok, we are GOOD!!!");
        }
    }

但我收到错误“严重性代码描述项目文件行 错误 CS0029 无法将类型 'int' 隐式转换为 'byte[]'""

所以当我有一个字节数组(从 SerialPort 编码为字符串)时,我如何识别数组中的一个特定字节,然后将其与另一个字节进行比较?

谢谢

【问题讨论】:

  • 你在哪一行得到错误?
  • if (bytes = (0x00, 0x00, 0x00, 0x06))
  • 0x... 默认情况下,编译器会将值转换为 int。
  • 谢谢,但知道如何解决比较数组中每个字节的问题吗?

标签: c# bytearray


【解决方案1】:

试试这个:

if(bytes.SequenceEquals(new byte[] { (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x06}))

【讨论】:

    【解决方案2】:

    您正在尝试将数组与 int 进行比较。

    您可以遍历数组的成员或使用SequenceEqual

    if (bytes.SequenceEqual(new byte[] {0x00, 0x00, 0x00, 0x06})
    

    【讨论】:

    • 嘿,谢谢大家。这很好用...我感谢你们俩...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 2020-11-04
    • 2019-10-10
    相关资源
    最近更新 更多