我有一个程序可以使用 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 个字节来表示。是否有任何代码可以以这种方式设置我的二进制文件的基础?我希望我的问题很清楚。