2

我需要通过串口向设备发送一个十六进制字符串,我现在这样做:

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。我希望你明白我的意思。

那么我该如何处理呢?

4

3 回答 3

8

这种格式称为二进制编码的十进制。对于两位数,整数除以 10 并乘以 16,然后将除以 10 的余数加回:

int num = 45;
int bcdNum = 16*(num/10)+(num%10);
于 2012-08-03T10:49:27.680 回答
3

另一种方法可能是

c[1] = Convert.ToByte(num.ToString(), 16);
于 2012-08-03T11:57:44.133 回答
0

假设 int Data=2821; 是通过 COM 端口发送:

c[0]= Convert.ToByte(data & 0x00FF); 

c[0]= Convert.ToByte(data & 0xFF00) >> 8);

ComPort.Write(c,0,c.Length );
于 2017-02-21T09:52:39.983 回答