之前用MFC写上位机程序的时候,需要从串口拿数值格式的数据,由于串口通讯一般是字符型数据,也就是无符号位的数据,当我使用串口发送1个字节的数字格式数据(-128~+127)时,他会默认把二进制最高位当作数字位,也就变为了(0~+255)范围,由于我传递的值有负数,也就导致数值为负数时,无法准确显示真实值。
解决方法就是自己写个函数,做个判断,看不懂的建议学习一下补码,掩码方面的内容。
int CGSDlg::Hex2Int(char hex)
{
int i;
byte j;
if (hex > 0x80)
{
j = hex;
hex = (~j);
hex += 0x01;
}
i = hex;
return i;
}