私は自分のプロジェクトに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 and Python 3:
>>> int(codecs.encode(b'f483', 'hex'), 16)
1714698291
利点は、文字列が特定のサイズの仮定に限定されないことです。欠点は、署名されていないことです。
struct.unpack(">i","f483")[0]
多分?
>
はビッグエンディアンを意味し、i
は符号付き32ビット整数を意味します
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