Given a HexaDecimal number as input. Now, write a Kotlin program to convert HexaDecimal number to Decimal.
Input: 7 Output: 7
Input: a1 Output: 161
Input: a9 Output: 169
1. Program to Convert HexaDecimal to Decimal
A HexaDecimal number consist of either digits from 0 to 9 (i.e. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) or alphabets from ‘A’ to ‘F’ or ‘a’ to ‘f’ (i.e. ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’).
Below are the numeric value of alphabets used –
- ‘A’ or ‘a’: 10
- ‘B’ or ‘b’: 11
- ‘C’ or ‘c’: 12
- ‘D’ or ‘d’: 13
- ‘E’ or ‘e’: 14
- ‘F’ or ‘f’: 15
It means HexaDecimal number can contain only 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’ and ‘f’.
Note: Please note that you can also use lowercase alphabets.
Pseudo Algorithm
- Initialise a variable decimalNum, that stores equivalent decimal value, with 0
- Extract each digit from the hexadecimal number.
- While extracting, multiply the extracted digit with proper base (power of 16).
- For example, if hexadecimal number is 110, decimalNum = 1 * (16^2) + 1 * (16^1) + 0 * (16^0) = 272
Sourcecode –
fun main() {
println("Enter n:")
val hexaDecimalN = readLine()
if(checkHexaDecimalNumber(hexaDecimalN!!)) {
var i = hexaDecimalN.length - 1
var decimalN: Long = 0
var base = 1
while(i >= 0) {
val charAtPos = hexaDecimalN[i]
val lastDigit = if((charAtPos >= '0') && (charAtPos <= '9')) {
charAtPos - '0'
} else if((charAtPos >= 'A') && (charAtPos <= 'F')) {
charAtPos.toInt() - 55
} else if((charAtPos >= 'a') && (charAtPos <= 'f')) {
charAtPos.toInt() - 87
} else {
0
}
decimalN += lastDigit * base
base *= 16
i--
}
println("Equivalent HexaDecimal : $decimalN")
} else {
println("$hexaDecimalN is not a HexaDecimal number")
}
}
private fun checkHexaDecimalNumber(hexaDecimalNum: String): Boolean {
var isHexaDecimalNum = true
for(charAtPos in hexaDecimalNum) {
if(!(
((charAtPos >= '0') && (charAtPos <= '9'))
|| ((charAtPos >= 'A') && (charAtPos <= 'F'))
|| ((charAtPos >= 'a') && (charAtPos <= 'f'))
)) {
isHexaDecimalNum = false
break
}
}
return isHexaDecimalNum
}
When you run the program, output will be –
Enter n: abcdfe Equivalent HexaDecimal : 11259390
Explanation:
- We use checkHexaDecimalNumber function to check if number is hexaDecimal or not. For any number to be hexaDecimal, its’s digit should be between –
- 0 to 9
- A to F
- a to f
At first, we checked if entered value is hexaDecimal or not.
If NO, we print a message “number is not hexaDecimal number”.
If Yes, we start converting those number into decimal –
- variable base contains power of 16 to the position at which current last digit we have in lastDigit
- Decimal value is sum of lastDigit * (power of 16 to the position at which current lastDigit is at)
- For example,
hexaDecimalN = 110decimalN = 1 * (16 ^ 2) + 1 * (16^1) + 0 * (16 ^ 0) = 272
Thus, we went through Kotlin Program to Convert HexaDecimal Number to Decimal Number.