# Java Program to Convert Binary to Hexadecimal

• Difficulty Level : Basic
• Last Updated : 20 May, 2021

The Hexadecimal number system as the name suggests comprises 16 entities. These 16 entities consist of 10 digits, 0-9 representing the first 10 numbers of the hexadecimal system as well. For the remaining 6 numbers, we use English alphabets ranging from A through F to represent the numbers 10 to 15. It should be noted that the lowest number in the hexadecimal system is 0 with the highest being 15 represented by F. A hexadecimal number can be derived from a binary number by clubbing 4 digits to constitute a single character of the hexadecimal number.

Example:

```Input: 11011111
Output: DF

Input: 10001101
Output: 8D```
• In the above example, the binary number 10001101 can be broken down into chunks of 4 bits such as 1000 and 1101 which act as 2 characters for the corresponding hexadecimal number.
• The resultant hexadecimal number would be 8D where every character is determined by calculating its corresponding value in the decimal system and replacing it with an alphabet if it is a two-digit number in this case D which represents 13. The hexadecimal system is also referred to as base-16.

For the conversion of binary to hexadecimal, we are going to use the following two approaches :

1. Using the toHexString() builtin java method
2. Repeatedly getting the remainder and dividing the converted decimal number by 16

Approach 1:

Using this approach, we first convert the binary number to a decimal number which is stored as an Integer. Then, we simply use the toHexString() method of java to generate the desired output string.

Syntax :

`public static String toHexString(int num)`

Parameter:

• num – This parameter specifies the number which is to be converted
to a Hexadecimal string. The data-type is int.

Return Value: The function returns a string representation of the int argument as an unsigned integer in base 16.

Algorithm :

1. Convert the binary number to a decimal number.
2. To convert the binary number to a decimal number, first, extract each digit using by getting the remainder by dividing by 10.
3. Next, multiply this digit with increasing powers of 2.
4. Keep on dividing the original binary number by 10 to eliminate the last digit in each iteration.
5. After having gotten the decimal number, just use the toHexString() method to get the desired output.

Example:

## Java

 `// Java program to convert binary to hexadecimal` `class` `GFG {` `    ``// method to convert binary to decimal``    ``int` `binaryToDecimal(``long` `binary)``    ``{` `        ``// variable to store the converted``        ``// binary number``        ``int` `decimalNumber = ``0``, i = ``0``;` `        ``// loop to extract the digits of the binary``        ``while` `(binary > ``0``) {` `            ``// extracting the digits by getting``            ``// remainder on dividing by 10 and``            ``// multiplying by increasing integral``            ``// powers of 2``            ``decimalNumber``                ``+= Math.pow(``2``, i++) * (binary % ``10``);` `            ``// updating the binary by eliminating``            ``// the last digit on division by 10``            ``binary /= ``10``;``        ``}` `        ``// returning the decimal number``        ``return` `decimalNumber;``    ``}` `    ``// method to convert decimal to hexadecimal``    ``String decimalToHex(``long` `binary)``    ``{``        ``// variable to store the output of the``        ``// binaryToDecimal() method``        ``int` `decimalNumber = binaryToDecimal(binary);` `        ``// converting the integer to the desired``        ``// hex string using toHexString() method``        ``String hexNumber``            ``= Integer.toHexString(decimalNumber);` `        ``// converting the string to uppercase``        ``// for uniformity``        ``hexNumber = hexNumber.toUpperCase();` `        ``// returning the final hex string``        ``return` `hexNumber;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{` `        ``// instantiating the class``        ``GFG ob = ``new` `GFG();` `        ``long` `num = ``10011110``;``      ` `        ``// calling and printing the output``        ``// of decimalToHex() method``        ``System.out.println(``"Inputted number : "` `+num);``        ``System.out.println(ob.decimalToHex(``10011110``));``    ``}``}`

Output

```Inputted number : 10011110
9E```

Approach 2:

• Under the second approach, we again first convert the binary number to a decimal number.
• Then we continuously divide and get the remainder of this decimal number to get the single character for each set of 4 bits we can find in the original binary number.

Algorithm:

1. Convert the binary to a decimal using steps 2-4 in the above algorithm.
2. Next, run a while loop with the terminating condition that the decimal number becomes 0 and the updating condition that the decimal number is divided by 16 in each iteration.
3. In each iteration get the remainder by dividing the number by 16.
4. Constitute a new String and keep on adding characters which are the remaining on dividing by 16.
5. If the remainder is greater than or equal to 10 replace it with alphabets A-F depending on the remainder.

Example:

## Java

 `// Java program to convert binary to hexadecimal` `class` `GFG {` `    ``// method to convert binary to decimal``    ``int` `binaryToDecimal(``long` `binary)``    ``{` `        ``// variable to store the converted binary``        ``int` `decimalNumber = ``0``, i = ``0``;` `        ``// loop to extract digits of the binary``        ``while` `(binary > ``0``) {` `            ``// extracting each digit of the binary``            ``// by getting the remainder of division``            ``// by 10 and multiplying it by``            ``// increasing integral powers of 2``            ``decimalNumber``                ``+= Math.pow(``2``, i++) * (binary % ``10``);` `            ``// update condition of dividing the``            ``// binary by 10``            ``binary /= ``10``;``        ``}` `        ``// returning the decimal``        ``return` `decimalNumber;``    ``}` `    ``// method to convert decimal to hex``    ``String decimalToHex(``long` `binary)``    ``{` `        ``// variable to store the output of``        ``// binaryToDecimal() method``        ``int` `decimalNumber = binaryToDecimal(binary);` `        ``// character array to represent double``        ``// digit remainders``        ``char` `arr[] = { ``'A'``, ``'B'``, ``'C'``, ``'D'``, ``'E'``, ``'F'` `};` `        ``// variable to store the remainder on``        ``// division by 16``        ``int` `remainder, i = ``0``;` `        ``// declaring the string that stores the``        ``// final hex string``        ``String hexNumber = ``""``;` `        ``// loop to convert decimal to hex``        ``while` `(decimalNumber != ``0``) {` `            ``// calculating the remainder of decimal``            ``// by dividing by 16``            ``remainder = decimalNumber % ``16``;` `            ``// checking if the remainder is >= 10``            ``if` `(remainder >= ``10``)``              ` `                ``// replacing with the corresponding``                ``// alphabet from the array``                ``hexNumber = arr[remainder - ``10``] + hexNumber;``          ` `            ``else``              ` `                ``hexNumber = remainder + hexNumber;` `            ``// update condition of dividing the``            ``// number by 16``            ``decimalNumber /= ``16``;``        ``}` `        ``// returning the hex string``        ``return` `hexNumber;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{` `        ``// instantiating the class``        ``GFG ob = ``new` `GFG();` `        ``long` `num =``11000011``;``      ` `        ``// printing and calling the``        ``// decimalToHex() method``        ``System.out.println(``"Input : "``+num);``        ``System.out.println(``"Output : "` `+ob.decimalToHex(num));``    ``}``}`

Output

```Input : 11000011
Output : C3```

My Personal Notes arrow_drop_up