# Issue

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.

# Solution

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.

Answered By - Alcamtar Answer Checked By - David Goodson (PHPFixing Volunteer)

## 0 Comments:

## Post a Comment

Note: Only a member of this blog may post a comment.