コンパイルは通ってます。長すぎるのでメインの変換部分だけです。
バイナリでデータを読んで、書き出す間に0x00が混じってしまうようです。
どこでそうなるのかがわかりません。数値的には読み込んだ状態と
同じことを確認してから書き込んでいます。読み出しのときにすでに
エラーが発生しているのでしょうか?