首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

将8个0、1状态放入一个字节中,求好的算法!该怎么处理

2012-02-20 
将8个0、1状态放入一个字节中,求好的算法!有一组字符串:11110000 ,10101010 ,01101000 ……字符串中包

将8个0、1状态放入一个字节中,求好的算法!
有一组字符串:

"11110000" ,"10101010" ,"01101000" ……

字符串中包含8个0或1字符,表示真或假,求把这8个字符放入一个 字节 的好的算法。

[解决办法]
int main(int,char*[])
{
char sz[]="11110000";
unsigned char x=0;
for( int i=7;i>-1;--i){
x += ((sz[7-i]=='1')?1:0)<<i;
}
printf("%x\n",x);
}
[解决办法]

C/C++ code
int main(int,char*[]){    char sz[]="11110000";    unsigned char x=0;    for( int i=7;i>-1;--i){        x += ((sz[7-i]=='1')?1:0)<<i;    }    printf("%x\n",x);}
[解决办法]
字符串都是没有规律的
那还有什么算法可言

对单个字符串你可以使用位段,宏去赋值,相对比较简单
[解决办法]
这个没什么算法吧,如果想快点,就采用位运算!
[解决办法]
struct+union
[解决办法]
一看见0和1就想到位运算

[解决办法]
const char *p = "11110000";
unsigned char result = 0U;
for (int i = 0; i < 8; i++)
{
assert(NULL != p && ('1' == *p || '0' == *p));
result = (result << 1) | (*p++ - '0');
}

printf("%x\n", result);
[解决办法]
看看
问问,%x是什么呀
[解决办法]
定义一个字符数据来管理这些字符串,一个字节表示一个字符串,
之后通过位运算来进行处理,定义一组常量值表示 0~2^7-1 个数会方便很多
呵呵...
[解决办法]
实际上一些较高级的处理器有专门的指令来处理位运算。

热点排行