深層学習とその他

機械学習したいマン

pythonでバイナリを扱う

一人アドベントカレンダー4日目です。
たまたまpythonでバイナリを扱ったのでそれに関してのメモを書いていきます。

adventar.org

基本的な扱い

基本的にはstructで扱えばいいと思います。
パックするときはpackを使い、フォーマット文字列を指定します。
アンパックするときにはunpackを使い、同じフォーマット文字列を指定すれば戻すことができます。

import struct

x = struct.pack('II', 1000, 0)
print(x)
>> b'\xe8\x03\x00\x00\x00\x00\x00\x00'

print(struct.unpack('II', x))
>> (1000, 0)


今回はバイナリデータを読み込むためにこれを使いました。

f = open(hoge.txt, "rb")
offset, length = struct.unpack("II",f.read(8))

こんな感じでほしいデータを引っ張ることができました。