代码之家  ›  专栏  ›  技术社区  ›  Prashant Pimpale Dila Gurung

如何将十六进制字符串、十六进制字符串和十六进制字符串中的十进制值转换为字节

  •  0
  • Prashant Pimpale Dila Gurung  · 技术社区  · 6 年前

    我有一个十进制值的字节数组,比如 [0, 4, 20, 141] 我想把它转换成 [0x00, 0x04, 0x14, 0x8D]

    当前数据:

    byte[] packet = new byte[4];
    
    packet[0] = 0;
    packet[1] = 4;
    packet[2] = 20;
    packet[3] = 141;
    

    发送到串口的预期数据如下:

    byte[] mBuffer = new byte[4];
    
    mBuffer[0] = 0x02;
    mBuffer[1] = 0x04;
    mBuffer[2] = 0x14;
    mBuffer[3] = 0x8D;
    

    Convert.ToByte(string.Format("{0:X}", packet[0]));
    

    但是抛出一个异常:

    输入字符串的格式不正确。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Matt    6 年前

    出现异常是因为试图替换字符串中不带“$”前缀的变量。试试这个:

    // Converts integer 141 to string "8D"
    String parsed = String.Format($"{0:X}", packet[3]);  
    

    然后,您应该能够使用以下命令将其转换为字节:

    // Parses string "8D" as a hex number, resulting in byte 0x8D (which is 141 in decimal)
    Byte asByte = Byte.Parse(parsed, NumberStyles.HexNumber);