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

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

2012-06-05 
二进制转字符串C/C++ codeint i,jchar bit[32]char mu[4]char start[4]{a,b,c,d}for(i0i4

二进制转字符串

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

热点排行