💭
bytes ⇒ 整数値の変換 (python)
bytes ⇒ 整数値の変換 (python)
bytes データ⇒ 整数値に変換するとき int.from_bytes を使う。
byteorder
の引数にビッグエンディアンかリトルエンディアンか指定する。
でもマシンのネイティブのエンディアンを使いたい場合 sys.byteorder を使う。
https://docs.python.org/ja/3/library/stdtypes.html#int.from_bytes の説明そのまんまなんだけど。
実証コード
#!/usr/bin/python3
import sys
def dump(data):
print(data)
a = int.from_bytes(data, byteorder='big')
b = int.from_bytes(data, byteorder='little')
# この記事で言いたいことは byteorder=sys.byteorder の部分だけ
c = int.from_bytes(data, byteorder=sys.byteorder)
print(a, hex(a))
print(b, hex(b))
print(c, hex(c))
dump(b'\x01\x02')
dump(b'\x11\x12\x13\x14\x15\x16\x17\x18\x19') # 9バイトのデータ
実行結果 (little endian の PC で実行)
$ ./bytes.py
b'\x01\x02'
258 0x102
513 0x201
513 0x201
b'\x11\x12\x13\x14\x15\x16\x17\x18\x19'
314897056051100063769 0x111213141516171819
462904482303900324369 0x191817161514131211
462904482303900324369 0x191817161514131211
参考
Discussion