# Kotlin Program to Convert HexaDecimal Number to Decimal

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:")

var i = hexaDecimalN.length - 1
var decimalN: Long = 0
var base = 1
while(i >= 0) {

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--
}
} else {
}
}

if(!(
((charAtPos >= '0') && (charAtPos <= '9'))
|| ((charAtPos >= 'A') && (charAtPos <= 'F'))
|| ((charAtPos >= 'a') && (charAtPos <= 'f'))
)) {
break
}
}
}
```

When you run the program, output will be –

```Enter n:
abcdfe
```
###### 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,