Python的整数可以任意增大。为了按您希望的方式计算原始二进制补码,您需要指定所需的位宽。您的示例
-199703103以64位二进制补码显示,但也可能是32位或128位,因此开始时会产生不同数量的
0xf。
hex()不这样做。我建议以下方法:
def tohex(val, nbits): return hex((val + (1 << nbits)) % (1 << nbits))print tohex(-199703103, 64)print tohex(199703103, 64)
打印输出:
0xfffffffff418c5c1L0xbe73a3fL



