对于一个任务,我在Visual Studio中进行Huffman算法的压缩/解压缩。在我得到8位(例如10101010
)之后,我想将它转换为一个字节。这是我的代码:C++ bitstring到字节
unsigned byte = 0;
string stringof8 = "11100011";
for (unsigned b = 0; b != 8; b++){
if (b < stringof8.length())
byte |= (stringof8[b] & 1) << b;
}
outf.put(byte);
第一对夫妇位串输出正确的字节但当时如果我推超过3个字节,我得到了相同的字节多次。我不熟悉位操作,并且要求有人通过这个步骤来指导我或者通过一个工作函数。
你为什么| = 1 << b if b is > = stringof8.length()? – 2014-10-30 15:23:14
什么是'stringof8'? – 2014-10-30 15:24:40
您的stringof8是一个ASCII字符串,代表二进制位吗?如果是这样,那么ascii“1”首先通过从ascii“0”中减去ascii“1”转换为数字1,然后您可以执行位操作。 – DNT 2014-10-30 15:33:06