Pythonで何が起こっているのか本当にわかりません。
私が使用する場合
f.write(data.encode("hex"))
Python はデータを 16 進文字列に変換するため、"hello" の場合は文字列 68656c6c6f が得られます。
ただし、
f = open('file.dat', 'wb')
f.write("hello".encode("hex"))
f.close()
16 進数のアスキーを書き込むだけです。同じことがhexlifyにも当てはまります。\00 形式の 16 進数が必要ですが、すべて ascsii で 16 進数の文字列を取得しようとしているようです