読者です 読者をやめる 読者になる 読者になる

どせいたんさき。

ナスダヨー

"037 213" が gzip ファイルの目印らしい

NASAPAH database からとある分子の赤外線スペクトルデータをテキスト形式でダウンロード.拡張子.txt.gz だったので gunzip して中身を確認ようとしたらバイナリファイルだと警告されてしまう…….

強引に表示してみたら先頭の方になんだかファイル名らしき部分を発見したので,もしかしたらまだ圧縮されているのではないかと推測.解決の糸口を探すためにどんなバイナリなのか調べてみた*1

$ od -b hoge.txt | head
0000000 037 213 ...

というわけで最初の 2 バイト分を検索してみたところ以下の記述を発見する.

2. gzip ファイルのフォーマット


pkzip フォーマットは様々なヘッダの中で、多くのオーバーヘッドを課していて、
アーカイバにとっては便利であったが、1つのファイルだけを圧縮する時には、必要
ない。gzip はずっとシンプルな構造を使っている。数字はリトルエンディアンフォー
マットの中にあり、ビット 0 が最下位ビットである。1つの gzip ファイルは、圧
縮されたメンバーの連続である。各メンバーは以下の構造を持っている。

  • 2 バイト マジックヘッダ 0x1f, 0x8b (\037 \213)
algorithm.doc(Japanese)

ということでダウンロードしてきたファイルは二重に gzip で圧縮されていた模様.拡張子を再び .txt.gz に置き換えて gunzip で展開したところ問題なくテキストファイルに変換できた.めでたしめでたし.