我有一个返回23个十六进制值的串行设备。我使用点火中的system.serial.readBytes('COM1', 23)
读取值。返回array('b', [-85, 112, 1, 18, -79, 0, 1, 116, -41, 2, -17, 10, 28, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0])
。我知道这里的值是带符号2的补码中的十进制值,但是如何获得十进制值?例如,-85应为171,或十六进制为0xAB。我希望直接读取十六进制值,但是我不知道该怎么做。有什么主意吗?
您可以轻松地将它们转换为十进制值。
def signed2unsigned(val):
if val >= 0:
return val
else:
return 256+val