Pythonでバイナリデータを扱う¶
バイナリの比較¶
bytes型のデータをリテラルと比較¶
contents = file.read()
magic_word = contents[:4]
if magic_word == b'\xca\xfe\xba\xbe':
print('Java class file')
ビット操作¶
ビットマスク¶
ビット演算を使う¶
整数型のデータに対して2進数リテラルを指定してビット積を取ります。
- 整数の先頭3bitをマスクし、3bitの値を取る例
ver = (data & 0b1110_0000) >> 5
bytes型の場合は、整数に変換してからビット演算をします。整数変換時は、bytes型の並びがビッグエンディアンかリトルエンディアンかを指定します。
data = int.from_bytes(bytes, "big")