20.数据处理-补码转换
在处理十六进制数据时,我们常常遇到的一个问题就是如何将十六进制转换后为十进制,特别是有特殊要求的格式转换,我这里就遇到了一个特殊要求的转换。
转换要求:一个数值由16位二进制来表示,高低位进行交换操作,并且是补码表示,比如:
4C F7 表示的是F7 4C
将F7 4C表示为二进制,由于最高位为1 所以是负数,
F7 4C 取反加1 再转换为十六进制为 08 B4 十进制为 2228,那么最终就是 -2228
data1='4c'
data2='f7'
final=data2+data1
#final='f74c' # 十六进制的补码转换
if int(final[0],16)>7:
volt=((int(final,16))^(int('ffff',16)))+1
volt=volt*(-1)
else:
volt=int(final,16)
volt=volt