如何用“C#”对串口发送16进制数?
具体步骤如下:
接收的如果是按字节接收(ReadByte),那么接收回来的数直接就可以用10进制表示,如果需要显示,可以直接在变量之后加.ToString();
不明白可直接加我HI
----------------------------------
之前的回答
byte[] t = new byte[2];
t[0] = 0xAA;
t[1] = 0xBB;
串口对象.Write(t,0,2);
其中3个参数顺序为:byte型数组,偏移(从第几位开始发,从0开始计),发送长度。
为了避免误会,额外说个基础:0xAA是 16进制的AA。
下面是一些可能会用的上的转换
private byte[] HexStringToByteArray(string s)
{//16进制字符串转化为字节数组
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
private string ByteArrayToHexString(byte[] data)
{//字节数组转化为16进制字符串
StringBuilder sb = new StringBuilder(data.Length * 3);
foreach (byte b in data)
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));
return sb.ToString().ToUpper();
}
接收的如果是按字节接收(ReadByte),那么接收回来的数直接就可以用10进制表示,如果需要显示,可以直接在变量之后加.ToString();
不明白可直接加我HI
----------------------------------
之前的回答
byte[] t = new byte[2];
t[0] = 0xAA;
t[1] = 0xBB;
串口对象.Write(t,0,2);
其中3个参数顺序为:byte型数组,偏移(从第几位开始发,从0开始计),发送长度
为了避免误会,额外说个基础:0xAA是 16进制的AA
广告 您可能关注的内容 |