python 2.7相当于内置方法int.from_bytes

问题描述 投票:11回答:4

我正在尝试使我的项目python2.7和3兼容,而python 3具有内置方法int.from_bytes。是否存在python 2.7中的等价物,或者说这个代码2.7和3兼容的最佳方法是什么?

>>> int.from_bytes(b"f483", byteorder="big")
1714698291
python python-2.7 compatibility
4个回答
21
投票

您可以将其视为编码(特定于Python 2):

>>> int('f483'.encode('hex'), 16)
1714698291

或者在Python 2和Python 3中:

>>> int(codecs.encode(b'f483', 'hex'), 16)
1714698291

优点是字符串不限于特定大小的假设。缺点是它是未签名的。


6
投票
struct.unpack(">i","f483")[0]

也许?

>表示big-endian,i表示签名32位int

另见:https://docs.python.org/2/library/struct.html


4
投票

使用struct模块将字节解压缩为整数。

import struct
>>> struct.unpack("<L", "y\xcc\xa6\xbb")[0]
3148270713L

0
投票
> import binascii

> barray = bytearray([0xAB, 0xCD, 0xEF])
> n = int(binascii.hexlify(barray), 16)
> print("0x%02X" % n)

0xABCDEF
© www.soinside.com 2019 - 2024. All rights reserved.