LZW アルゴリズムとハッシュ テーブルを使用して圧縮ファイルを作成するプログラムがあります。私の圧縮ファイルには現在、ハッシュテーブルのインデックスに対応する整数が含まれています。この圧縮ファイルの最大整数は約 46000 で、16 ビットで簡単に表すことができます。次のコードを使用して、この「compressedfile.txt」をバイナリファイル「binary.bin」に変換すると(ファイルサイズをさらに縮小するため)、「binary.bin」ファイルに32ビット整数が含まれます。たとえば、圧縮ファイルに数字 84 がある場合、バイナリ ファイルでは 5400 0000 に変換されます。
std::ifstream in("compressedfile.txt");
std::ofstream out("binary.bin", ios::out | std::ios::binary);
int d;
while(in >> d)
{out.write((char*)&d, 4);}
私の質問は、「5400 0000」の末尾の「0000」を破棄できないかということです。これにより、ファイルで余分な 2 バイトが使用されます。これは、私の最大整数が 46000 であり、2 バイトのみで表現できるため、すべての整数に当てはまります。私のバイナリファイルのベースをそのように設定できるコードはありますか? 私の質問が明確であることを願っています。