我正在尝试让我的项目同时兼容Python 2.7和3,而Python 3中有内置的int.from_bytes方法。在Python 2.7中是否存在等效的方法?或者,最好的方法是什么,使得这段代码能够同时在Python 2.7和3上运行?
>>> int.from_bytes(b"f483", byteorder="big")
1714698291
我正在尝试让我的项目同时兼容Python 2.7和3,而Python 3中有内置的int.from_bytes方法。在Python 2.7中是否存在等效的方法?或者,最好的方法是什么,使得这段代码能够同时在Python 2.7和3上运行?
>>> int.from_bytes(b"f483", byteorder="big")
1714698291
您可以将其视为编码(针对 Python 2):
>>> int('f483'.encode('hex'), 16)
1714698291
或者在Python 2和Python 3中:
>>> int(codecs.encode(b'f483', 'hex'), 16)
1714698291
优点是字符串不受特定大小的限制。缺点是它是无符号的。
ord(b'\x11')
是什么意思? - deed02392struct.unpack(">i","f483")[0]
也许吗?
>
表示大端序,i
表示带符号的32位整数
> import binascii
> barray = bytearray([0xAB, 0xCD, 0xEF])
> n = int(binascii.hexlify(barray), 16)
> print("0x%02X" % n)
0xABCDEF