如何将字符串转化为二进制数?然后存到整型里?

来源:百度知道 编辑:UC知道 时间:2024/06/04 06:42:51
我们老师要求做一个课设 关于huffman压缩的
现在我已经将编码 赋值到一个
32位的字符串 a[32]
现在我想将它变为二进制数存入到 一个长整型long b[32]中
请问怎么实现。。。谢谢各位了

0,1,2,3,4,5,6,7,8,9分别对应
000,001,010,011,100,101,110,111
9的话需要四位1000
1.二进制计数法的概念
人们在日常生活中和生产实践中,我们接触到越来越多的数字,创造了分组计数的制度.而我们的生活中,一般采用了"满十进一"的十进制计数法,我们现在已经熟悉并经常运用这一种计数法了.但也有采用其他计数法.如二进制,六进制,十六进制等计数法.现在就来讲一讲"二进制"和"十进制"的关系
2.十进制和二进制数的互化
(1)化十进制数为二进制数
<1>比较小的十进制数为二进制数可以用观察法.
例:化45为二进制数
因为2的0次方,1次方,2次方~~~10次方分别等于1,2,4,8,16,32,64,128,256,512,1024.
所以 45=32+8+4+1=2⑤+2③+2②+1=1*2⑤+0*2④+1*2②+0*2①+1*1=101101(二进制)
<2>一般化法
利用短除法(通常叫做"二除取余法")
(2)化二进制数为十进制数
这是比较方便的,只需把二进制是写成展开式;计算即得.
例1 化101101(二进制)为十进制数.
101101(二进制)=1*2⑤+0*2④+1*2③+1*2②+0*2①+1*1=32+0+8+4+0+1=45
例 2 化1011010101(二进制)为十进制数.
1011010101(二进制)=1*2⑨+1*2⑦+1*2⑥+1*2④+1*2②+1*1=512+128+64+16+4+1=725

for(int i=0;i<32;i++)
{
__int64 sum=0;
for(int j=0;j<32;j++)
sum=(sum*2)+a[i][j]-'0';
b[i]=sum;
}

给分吧.