次のような.txtファイルがあるとします。
11111111111111Hello and welcome to stackoverflow. stackoverflow will hopefully provide me with answers to answers i do not know. Hello and goodbye.11111111111111
次に、同等のバイナリ形式(.binファイル)を次のように作成します。
Stream.Write(intBytes, 0, intBytes.Length); // 11111111111111
Stream.Write(junkText, 0, junkText.Length); // Hello and welcome to stackoverflow...
Stream.Write(intBytes, 0, intBytes.Length); // 11111111111111
最初の例は、2番目の例よりも圧縮率が高くなっています。11111111111111を取り外した場合、同じサイズに圧縮されます。ただし、11111を使用すると、.txtバージョンの圧縮率が向上します。
byte[] intBytes = BitConverter.GetBytes(11111111111111); // This is 8 bytes
byte[] strBytes = UTF8Encoding.UTF8.GetBytes("11111111111111"); // This is 14 bytes
これは、ネイティブC++Zlibライブラリを使用しています。
圧縮する前は、.binファイルのサイズが小さく、これを期待していました。
圧縮後、.txtバージョンのサイズが小さくなるのはなぜですか?同等のビンよりも圧縮率が高いようです。
binファイル:非圧縮サイズ:2448圧縮サイズ:177
txtファイル:非圧縮サイズ:2460圧縮サイズ:167