gpt4 book ai didi

c++ - 整数位移

转载 作者:行者123 更新时间:2023-11-27 23:17:18 24 4
gpt4 key购买 nike

<分区>

我正在尝试为我的霍夫曼编码构建一个位打包器。

由于霍夫曼编码的性质,我有以下形式的字符串:01001,它们的长度是可变的。我想将它们打包成一个整数以节省空间。

这是我在 main 中所做的:

bitpack.pack(found->second, found->second.size());

在我的 bitpack 里面我正在做

void BitPacker::pack(std::string stream, int size)
{
std::cout << "BitPacker received:\t" << stream.c_str() << "\t" << size << std::endl;
for(int i = 0; i < size; i++) {
//if buffer is not full keep shifting
std::cout << "Buffer index: " << index << std::endl;
std::bitset<8> binary(buffer);
std::cout << "Buffer: " << binary << std::endl;

if(index < 8) {
if(stream.at(i) == '1') {
buffer += 1;
//buffer << 1;
buffer <<= 1;
index++;
}
else {
//buffer << 0;
buffer <<= 1;
index++;
}
}
//write buffer
else {
std::cout << "Writting:\t"<< buffer << std::endl;
outfile->put(buffer);
index = 0;
buffer = 0;
}
}
}

但是看起来我做错了什么。

我想做的是遍历流,如果它是 1,则添加该位,然后对其进行移位。如果它是 0,我只想转移。这样我就可以继续打包成我的整数,一旦它

代码已更新

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com