# C Program to convert a decimal number to a hexadecimal number

Last updated on September 24, 2020

The following is a C program to convert a decimal number to a binary number:

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 /************************************************************ Program to convert a decimal number to a hexadecimal number ************************************************************/ #include // include stdio.h library int main(void) { int num, bin = 0; int i = 0, rem; char hex_arr[50]; printf("Enter a decimal number: "); scanf("%d", &num); while(num != 0) { rem = num % 16; // get the right most digit if (rem < 10) { hex_arr[i++] = 48 + rem; } else { hex_arr[i++] = 55 + rem; } num /= 16; // get the quotient } printf("0x"); for(int j = i - 1; j >= 0 ; j--) // print the hex_arr in reverse order { printf("%c", hex_arr[j]); } return 0; // return 0 to operating system } 

Expected Output: 1st run:

 1 2 Enter a decimal number: 198 0xC6 

2nd run:

 1 2 Enter a decimal number: 123456 0x1E240 

## How it works #

To convert a decimal number to a hexadecimal number, we follow these steps:

Step 1: Divide the decimal number continuously by 16 and write the remainder on the right-hand side of the dividend. We repeat this process until we get the quotient 0.

Step 2: If the remainder is greater than 10, then replace it with a hexadecimal character given in the table below:

10 A
11 B
12 C
13 D
14 E
15 F

Step 3: Write the remainders from bottom to top.

Let's take some examples:

Example 1: Convert decimal 210 to hexadecimal number.

Step 1:

Quotient Remainder
210/16 13 2
13/16 0 13

Step 2:

210/16 13 2 2
13/16 0 13 D

Step 3:

$$\mathtt{210_{10} = 0xD2_{16}}$$

Example 2:

Convert decimal 100 to a hexadecimal number.

Step 1:

Quotient Remainder
100/16 6 4
6/16 0 6

Step 2: In this case, both the remainders are smaller than 10, so we don't need to replace them with the hexadecimal characters.

Step 3:

$$\mathtt{100_{10} = 0x64_{16}}$$

The following table shows what happens at each iteration of the loop (assuming num = 198):

Iteration rem hex_arr num i
After 1st iteration rem=198%16=6 hex_arr[0]=48+6=54 num=198/16=12 i=1
After 2nd iteration rem=12%16=12 hex_arr[1]=55+12=67 num=12/16=0 i=2