web-dev-qa-db-ja.com

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
14
Fabian Barkhau

あなたはそれをエンコーディングとして扱うことができます(Python 2固有):

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

またはPython 2 and Python 3:

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

利点は、文字列が特定のサイズの仮定に限定されないことです。欠点は、署名されていないことです。

23
dawg
struct.unpack(">i","f483")[0]

多分?

>はビッグエンディアンを意味し、iは符号付き32ビット整数を意味します

参照: https://docs.python.org/2/library/struct.html

8
Joran Beasley

struct モジュールを使用して、バイトを整数にアンパックします。

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

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

0xABCDEF
0
Dan