C++ short类型的输入如何转换十进制
在上位机和下位置传输时候,会出现类型不对应,要自己搞明白获取啥
标志位: aa bb cc dd
次数: 3a 00 00 00 –> 0x00 00 00 3a = 58 –>(58-10)/8 = 6(次)
公式:(value -10 )/8
单孔标志位: ee 舍弃
序号:01
高度: 00 06 –> 0x0006
宽度: 00 00 –> 0x0000
面积: 00 00 –> 0x0000
例子: 0xFFE8
1:取高字节并左移 8 位: 0xFF –>xFF00
2:取低字节:0xE8 –> xE8
3:进行 |(按位或)运算:0xFF00 | 0x00E8 = 0xFFE8
4:short 是 16 位有符号整数,最高位(第 15 位)为符号位
0xFFE8 –>0b 1111 1111 1110 1000
5:计算 0xFFE8 的十进制值:
采用补码表示,计算它的原码:
取反(逐位取反):0000 0000 0001 0111
加 1:0000 0000 0001 1000(即 0x18,十进制 24)
负号保留,所以 0xFFE8 的十进制值是 -24。
计算公式: 0xFFE8 -> 0x18 ->-24 由于代码中添加了 < 0的值,为0 ,所以最终得到0