如何使python看起来像两个补的十六进制数?

2024-09-28 23:17:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个十六进制正数和负数数组。我想把它们转换成十进制值:

>>> int("f107",16)
61703
>>> 

我如何使python看起来f107为2的补数?换句话说,我想要-3833而不是{}。我怎样才能做到呢?在


Tags: 数组int负数正数f107补数
2条回答

这是一个非常简单的函数:

def twos_complement(n, w=32):
    if n & (1 << (w - 1)): n = n - (1 << w)
    return n

示例:

^{pr2}$

与Joran的回答不同,它支持任意比特宽度。在

struct.unpack(">h","f107".decode("hex"))

0xf107=编码到字节=>;"\xf1\x07"

因为它是两个字节,所以我们简单地将其解压为>big-endian h有符号的short

相关问题 更多 >