【发布时间】:2014-10-30 15:19:32
【问题描述】:
对于一项作业,我正在 Visual Studio 中对 Huffman 算法进行压缩/解压缩。在我得到 8 位(例如10101010)后,我想将它转换为一个字节。这是我的代码:
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 = stringof8.length()?
-
什么是
stringof8? -
你的 stringof8 是一串代表二进制位的 ascii 字符吗?如果是这样,那么 ascii "1" 通过先减去 ascii "0" 转换为数字 1,然后您可以进行位操作。
-
向我们展示 stringof8 的声明。
-
例如,string stringof8 = "11100011" 我想将它等于的字节输出到输出文件中
标签: c++ bit-manipulation bitstring