将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);
}
[解决办法]
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 个数会方便很多
呵呵...
[解决办法]
实际上一些较高级的处理器有专门的指令来处理位运算。