Java Hexadecimal to Decimal Conversion
In Mathematics, we use various positional numbering schemes for representing numbers. We are familiar with decimal numbering system which uses a base of 10. Two other commonly used numbering systems in computing are hexadecimal (base 16) and binary (base 2).
When we represent a number in hexadecimal system, we use the symbols 0 to 9 and letters A, B, C, D, E and F. Decimal numbering system uses symbols 0 to 9. A value D in hexadecimal corresponds to the decimal value of 13. Following are some of the examples of hexadecimal to decimal conversion,
1AF = 1*16*16 + 10*16 + 15 = 256 + 160 + 15 = 431
224B = 2*16*16*16 + 2*16*16 + 4*16 + 11 = 8192 + 512 + 64 + 11 = 8779
The conversion involves the following steps,
- Find the decimal value of each digit in hexadecimal string
- Multiply each decimal value with 16 raised to the power of the position of the digit
- Add all the values to get the equivalent decimal value
The following program uses the above algorithm to convert hexadecimal string to its corresponding decimal value,
/**
* This program converts a hexadecimal value to its corresponding decimal value
* @author QPT
*/
public class HexToDecimal {
public static String HEX_CHARACTERS="0123456789ABCDEF";
public static void main(String[] args) {
HexToDecimal hd = new HexToDecimal();
String hexValue = "87BBDF";
int dec = hd.hex2dec(hexValue);
System.out.println("Decimal value of "+hexValue+" is "+dec);
}
/**
*
* @param hexValue hex value for decimal conversion
* @return decimal value
*/
private int hex2dec(String hexValue) {
hexValue = hexValue.toUpperCase();
int decimalResult = 0;
for(int i=0;i<hexValue.length();i++) {
char digit = hexValue.charAt(i);
int digitValue = HEX_CHARACTERS.indexOf(digit);
decimalResult = decimalResult*16+digitValue;
}
return decimalResult;
}
}