荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: 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软件 网络书店