pythonでバイナリに文字列書き込み

Zip実装でお勉強中。

ヘッダー書くところの次で、ファイル名をバイナリに書き込もうとおもったけど
やりかたがなかなかわかりませんでした。

  • 以下は、単純に struct.unpack の使い方です。


文字列を pack でバイナリ書き込みするときは
s で書き込みます。
ただし、H や L と違って s だけで指定だと 1 文字しかきこめません。

import struct
f = open("hoge1.zip", "wb")
f.write(struct.pack('<s', 'h'))
f.close()

チュートリアルなどを読んだのですが、
連続する文字列を書き込む方法がよくわからなくて、
いろいろ試しました。
けっきょく、struct.pack('<5s', 'hoge.txt') のような指定でうまく行きました。

s は、単純にマルチバイト文字の文字数を表してるようなので、
len() で取得して、s をくっつけます。
さらに、s を指定するときは、リトルエンディアンの指定(<)がいらないことがわかりました。


こんなかんじ

filename = 'hoge.txt'
filelens = str(len(filename)) + 's'
f.write(struct.pack(filelens, filename))


とりあえず、ファイル名の書き込みまで。
次のバイナリの中身はなんだ!?