我有一个十进制值的字节数组,例如[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 :(得分:1)
之所以会出现异常,是因为您试图替换字符串中没有“ $”前缀的变量。试试这个:
// 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);