我正在尝试先将二进制数转换为十进制,然后再转换为十六进制,以将二进制数转换为十六进制数。
当我运行仅将十进制转换为十六进制的部分时,它可以正常工作,但是每当我尝试同时运行两者时,它不起作用吗?
for (returnBinary = length - 1; returnBinary > -1; returnBinary--) {
if (input[returnBinary] == '1') {
binDec = binDec + power(2, length - returnBinary - 1);
}
}
// decimal to hex
while (binDec != 0) {
remainder = binDec % 16;
if (remainder < 10) {
hexResult[returnBinary++] = 48 + remainder;
} else {
hexResult[returnBinary++] = 55 + remainder;
}
binDec = binDec / 16;
}
// print in reverse
printf("Your hexadecimal value is: 0x");
for (returnHex2 = returnHex; returnHex2 >= 0; returnHex2--) {
printf("%c", hexResult[returnHex2 - 1]);
}
每个部分都可以单独正常工作,但是放在一起就无法工作。
EG:将十进制数60转换为十六进制可以很好地工作,但是当转换为60的二进制等效值(111100)时,如果应该为0x3C,则结果为0xC。
最佳答案
进行追踪,我发现:
hex[-1] = 'C'
hex[0] = '3'
我怀疑你的意思
hexResult[returnHex++] = 48 + remainder
代替
hexResult[returnBinary++] = 48 + remainder
假设returnHex初始化为零。
关于c - 为什么我的二进制数不能正确转换为十六进制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55602378/