Python 2.7 эквивалент встроенного метода int.from_bytes
Я пытаюсь сделать мой проект совместимым с python2.7 и 3, а python 3 имеет встроенный метод int.from_bytes. Имеет ли эквивалент в python 2.7 или, вернее, лучший способ сделать этот код совместимым с 2.7 и 3.
>>> int.from_bytes(b"f483", byteorder="big")
1714698291
Ответы
Ответ 1
Вы можете рассматривать его как кодировку (специфичный для Python 2):
>>> int('f483'.encode('hex'), 16)
1714698291
Или в Python 2 и Python 3:
>>> int(codecs.encode(b'f483', 'hex'), 16)
1714698291
Преимущество заключается в том, что строка не ограничивается предположением о конкретном размере. Недостатком является отсутствие знака.
Ответ 2
struct.unpack(">i","f483")[0]
может быть?
>
означает big-endian и i
означает подписанный 32-битный int
см. также: https://docs.python.org/2/library/struct.html
Ответ 3
Используйте модуль struct
, чтобы распаковать байты в целые числа.
import struct
>>> struct.unpack("<L", "y\xcc\xa6\xbb")[0]
3148270713L
Ответ 4
> import binascii
> barray = bytearray([0xAB, 0xCD, 0xEF])
> n = int(binascii.hexlify(barray), 16)
> print("0x%02X" % n)
0xABCDEF