哈夫曼编码做压缩软件的问题c++

voidHuffTree::Compression(){charcomfile[200];strcpy(comfile,file);strcat(comfile,".zi... void HuffTree::Compression()
{
char comfile[200];
strcpy(comfile,file);
strcat(comfile,".zip");
char ch;
ifstream ifile;
ifile.open(file,ios::in);
ofstream ofile;
ofile.open("tmp.txt"); //构建临时文档用于存放产生的所有哈夫曼编码
ofstream ComFile;
ComFile.open(comfile,ios::binary|ios::out);
while(!ifile.eof())
{
ifile.get(ch);
for(int i=0;i<NodeNum;i++)
{
if(NodeTable[i].ch==ch)
{
ofile<<NodeTable[i].code;
break;
}

}
}
ofile.close();
ifile.close();

ifstream fifile;
fifile.open("tmp.txt",ios::in);

unsigned int bin;

while(!fifile.eof())
{
bin=0;

for(int j=0;j<32;j++)
{
fifile.get(ch);
if(ch=='1')
{
bin |= (unsigned int) 1<<j; //对01编码进行比特化

//_A |=(unsigned int) 1<<i
//bin<<1;
}

}

ComFile.write((char*)&bin,4); //写入二进制文件
}
fifile.close();
ComFile.close();
}

这是我看别人写的代码,把01用二进制写进压缩成的文件之后,为什么还要比特化,比特化是什么意思,那一行代码看不懂
我现在的理解是从0开始如果字符为1的话就左移i位,形成32个1,0的二进制,再每次写入4个字节,既分4次写入。不知道对不对,但是那个 |= 符号是什么意思呢?
展开
 我来答
空雪梦见
2014-12-21 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1197万
展开全部
因为32个0、1是4个字节。(因为8个0、1是一个字节)
但是它这个东西算出来的是一个0、1占一个字节的那种
所以要变成32个0、1占4字节的那种
更多追问追答
追问
能讲一下那一行代码写的是什么意思吗?我怎么看不懂他的符号
追答

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式