我需要通过串口向设备发送一个十六进制字符串,我现在这样做:
byte[] c = new byte[3];
c[0] = 0x57;
c[1] = 0x30;
ComPort.Write(c,0,c.Length );
现在我需要将 int 的值转换为 30c[1] = 0x30
或 34 的 int 值c[1] = 0x34
。我希望你明白我的意思。
那么我该如何处理呢?
这种格式称为二进制编码的十进制。对于两位数,整数除以 10 并乘以 16,然后将除以 10 的余数加回:
int num = 45;
int bcdNum = 16*(num/10)+(num%10);
另一种方法可能是
c[1] = Convert.ToByte(num.ToString(), 16);
假设 int Data=2821; 是通过 COM 端口发送:
c[0]= Convert.ToByte(data & 0x00FF);
c[0]= Convert.ToByte(data & 0xFF00) >> 8);
ComPort.Write(c,0,c.Length );