我正在尝试使我的项目python2.7和3兼容,而python 3具有内置方法int.from_bytes。是否存在python 2.7中的等价物,或者说这个代码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
优点是字符串不限于特定大小的假设。缺点是它是未签名的。
struct.unpack(">i","f483")[0]
也许?
>
表示big-endian,i
表示签名32位int
使用struct
模块将字节解压缩为整数。
import struct
>>> struct.unpack("<L", "y\xcc\xa6\xbb")[0]
3148270713L
> import binascii
> barray = bytearray([0xAB, 0xCD, 0xEF])
> n = int(binascii.hexlify(barray), 16)
> print("0x%02X" % n)
0xABCDEF