二进制转字符串,该怎么处理
二进制转字符串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}就行了
[解决办法]单步跟踪一下
[解决办法][解决办法]偶的神啦
for(i=0;i<4;i++)
{
printf("%d\n",mu[i]);
}
%d,输出是10进制数,LZ敢不敢用%c?