荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: bso (BSO's So Open), 信区: Program
标 题: Re: 有一段char类型的01组成的字符,怎样把它们当作二进制数写
发信站: 荔园晨风BBS站 (Sun Nov 26 13:11:47 2006), 站内
实现了一个给你参考一下
/*将含有01的s1字符串转换为位保存于s2中,实现压缩功能,s1必须以\0结束,s2的长度必须
大于strlen(s1)/8*/
void CharToBit(char *s1,char *s2)
{
int count=0;
unsigned char i,t;
while(*s1)
{
switch(*s1)
{
case '0':
t=1;
i=0;
i=~i;
t=t<<(7-count);
i^=t;
if(count<8)
{
*s2&=i;
++count;
}
else
{
count=0;
++s2;
*s2&=i;
++count;
}
break;
case '1':
i=1;
if(count<8)
{
*s2|=(i<<(7-count));
++count;
}
else
{
count=0;
++s2;
*s2|=(i<<(7-count));
++count;
}
break;
}
++s1;
}
/*对不满8位时将剩余低位填充0*/
if(count<8)
{
i=0;
i=~i;
i=i>>(count+1);
i=~i;
*s2&=i;
}
}
【 在 djack (清凉阳光) 的大作中提到: 】
: 谢谢了````但具体怎么位呢
--
※ 来源·流星射手BBS站 bbs.archer.com.cn·[FROM:流星射手]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店