zlib (.gz) と bzlib

[ 識別方法 ]
RFC1952によると、gzip ファイルの最初の2バイトは 0x1f, 0x8b で、それに続く 1 バイトが 0x08 (0x00-0x07 が予約されているが、使われていない模様) と決まっている。
bzip2 の場合は、最初の3バイトは ‘BZh’ で、4 バイト目が 0x31-0x39 (bzip2 -X で指定した圧縮の effort level) だ。
[ zlib の使い方 ]
Zlib Manual をみれば簡単。使いそうな関数としては、
– gzFile gzopen (const char *path, const char *mode);
– gzFile gzdopen (int fd, const char *mode);
– int gzread (gzFile file, voidp buf, unsigned len);
– int gzwrite (gzFile file, const voidp buf, unsigned len);
– int gzeof (gzFile file);
– int gzclose (gzFile file);
あたり。便利です。オープンしたファイルが .gz format じゃない場合、gzread はただの read() になる。
つかいかたは bzlib もほとんど同じ。

コメントを残す