读书人

二进制转字符串,该怎么处理

发布时间: 2012-06-05 13:54:06 作者: rapoo

二进制转字符串

C/C++ code
    int i,j;    char bit[32];    char mu[4];    char start[4]={'a','b','c','d'};    for(i=0;i<4;i++)    {       for(j=0;j<8;j++)       {         *(bit+i*8+7-j)=(start[i]>>j)&1;       }    }    for(i=0;i<4;i++)    {       for(j=0;j<8;j++)       {          mu[i]|=*(bit+i*8+7-j)<<j;       }    }    for(i=0;i<4;i++)    {       printf("%d\n",mu[i]);    }

结果为什么不是a,b,c,d

[解决办法]
char mu[4]未初始化,所以mu[i]|=*(bit+i*8+7-j)<<j得到的结果是不确定的

改成char mu[4]={0, 0, 0, 0}就行了
[解决办法]
单步跟踪一下
[解决办法]
探讨

char mu[4]未初始化,所以mu[i]|=*(bit+i*8+7-j)<<j得到的结果是不确定的

改成char mu[4]={0, 0, 0, 0}就行了

[解决办法]
偶的神啦

for(i=0;i<4;i++)
{
printf("%d\n",mu[i]);
}

%d,输出是10进制数,LZ敢不敢用%c?

探讨

引用:
char mu[4]未初始化,所以mu[i]|=*(bit+i*8+7-j)<<j得到的结果是不确定的

改成char mu[4]={0, 0, 0, 0}就行了

得到的是97,98,99,100 为什么不是a,b,c,d

读书人网 >C++

热点推荐