Python 在点火开关中从串行读取十六进制或十进制

Python 在点火开关中从串行读取十六进制或十进制,python,serial-port,hex,decimal,ignition,Python,Serial Port,Hex,Decimal,Ignition,我有一个串行设备,返回23个十六进制值。我使用点火开关中的system.serial.readBytes('COM1',23)读取值。这将返回数组('b',[-851121,18,-79,0,1116,-41,2,-17,10,28,22,0,0,0,0,0,0,0])。我知道这里的值是从有符号2的补码中得到的十进制值,但是我怎么才能得到十进制值呢?例如,-85应该是171,或者十六进制中的0xAB。我更愿意直接读取十六进制值,但我不知道如何做到这一点。有什么想法吗?您可以轻松地将它们转换为十进

我有一个串行设备,返回23个十六进制值。我使用点火开关中的
system.serial.readBytes('COM1',23)
读取值。这将返回
数组('b',[-851121,18,-79,0,1116,-41,2,-17,10,28,22,0,0,0,0,0,0,0])
。我知道这里的值是从有符号2的补码中得到的十进制值,但是我怎么才能得到十进制值呢?例如,-85应该是171,或者十六进制中的0xAB。我更愿意直接读取十六进制值,但我不知道如何做到这一点。有什么想法吗?

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

def signed2unsigned(val):
    if val >= 0:
        return val
    else:
        return 256+val

串行模块上没有读取十六进制的方法。即使readStringAsBytes仍将返回字节字符串,您必须将其转换为十六进制。请将您的注释转换为答案,以便我可以将其标记为已回答。