3

我有一个返回 23 个十六进制值的串行设备。我读取了system.serial.readBytes('COM1', 23)Ignition 中使用的值。这返回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。我宁愿直接读取十六进制值,但我不知道该怎么做。任何想法?

4

1 回答 1

0

您可以轻松地将它们转换为十进制值。

def signed2unsigned(val):
    if val >= 0:
        return val
    else:
        return 256+val
于 2019-10-08T02:57:02.537 回答