I am trying to convert a binary number to a hexadecimal number by converting the binary number to decimal first, then to hexadecimal.
When I run the part that converts decimal to hexadecimal alone, it works fine, but whenever I try to run both, it doesn't work?
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]); } Each part works fine separately, but when put together it doesn't work.
EG: Converting the decimal number 60 to hex works fine, but when converting the binary equivalent of 60 (111100), it gives me a result of 0xC, when it should be 0x3C.
41 Answer
Tracing it through, I see that:
hex[-1] = 'C' hex[0] = '3' I suspect that you meant
hexResult[returnHex++] = 48 + remainder instead of
hexResult[returnBinary++] = 48 + remainder assuming that returnHex is initialized to zero.