Binary C中的六角到箱
我想把十六进制转换成二进制。如果我调用位(0x101),它将打印00011,这显然是错误的。我很确定它在循环中。有什么想法吗Binary C中的六角到箱,binary,hex,Binary,Hex,我想把十六进制转换成二进制。如果我调用位(0x101),它将打印00011,这显然是错误的。我很确定它在循环中。有什么想法吗 int hextobin (int n){ char buffer[33]; if(n==0) { putchar('0'); return 0; } char *cp = buffer + 32; *cp = 0; for(int i =0;i <=sizeof(n); i++){ -
int hextobin (int n){
char buffer[33];
if(n==0) {
putchar('0');
return 0;
}
char *cp = buffer + 32;
*cp = 0;
for(int i =0;i <=sizeof(n); i++){
--cp;
if(n & 1) *cp = '1';
else *cp = '0';
n >>= i;
}
printf(cp);
return 0;
}
inthextobin(intn){
字符缓冲区[33];
如果(n==0){
putchar('0');
返回0;
}
char*cp=buffer+32;
*cp=0;
对于(int i=0;i>=i;
}
printf(cp);
返回0;
}
一旦将最后一个1
位移出n
,它将变为零,循环中止,即使还有位需要处理
帮你自己一个忙…正确地缩进你的代码。当它格式正确时,阅读/调试会容易得多。那么我该如何解决这个问题呢?我是否将那一行移到其他地方?而不是
while(n)
,你应该为你想要转换的每一位做一个for()循环。例如for(int i=0;ifor(int i=0;i>=i;}
这是我现在的for循环。仍然没有打印出正确的内容。