## Decimal Number System

Decimal number system is the standard system for denoting integers and non-integers numbers.

This is also known as **base 10** number system.

```
0 1 2 3 4 5 6 7 8 9
```

## Hexadecimal Number System

Hexadecimal (mostly used as **hex**) number system use 16 symbols. It is known as **base 16** number system, where 10 symbols are same as decimal and value greater than 9 represent as A=10, B=11, C=12, D=13, E=14, F=15.

```
0 1 2 3 4 5 6 7 8 9 A B C D E F
```

## Convert Hexadecimal to Decimal

Golang package `strconv`

provides `ParseInt`

and `ParseUint`

to convert the string to the number in the respective base.
Hexadecimal numbers are commonly use `0x`

or `0X`

in front of the number. It is only to avoid confusion.

**Syntax**

```
func ParseInt(s string, base int, bitSize int) (i int64, err error)
```

```
package main
import (
"fmt"
"strconv"
)
func main() {
hexa := "F1"
decimal, err := strconv.ParseInt(hexa, 16, 32)
if err != nil {
fmt.Println(err)
}
fmt.Printf("Hexadecimal %s (base16) = Decimal %v (base10)", hexa, decimal)
}
```

**Output**

```
Hexadecimal F1 (base16) = Decimal 241 (base10)
```

The

`ParseUint`

is same as`ParseInt`

but it takes only unsigned integers. To remove the`0x`

or`0X`

from the hex number, you can use slices.

```
hexa := "0xfc"
hexa = hexa[2:]
```

## Convert Decimal to Hexadecimal

The same `strconv`

package provides `FormatInt`

and `FormatUint`

to convert the decimal number to a respective base number.

```
package main
import (
"fmt"
"strconv"
)
func main() {
var decimal int64 = 252
hexa := strconv.FormatInt(decimal, 16)
fmt.Printf("Decimal %v (base10) = Hexadecimal %s (base16)", decimal, hexa)
}
```

The

`FormatUint`

is same as`FormatInt`

but it takes only unsigned integers.

For negative numbers use `-`

minus sign.