## Hexadecimal basics using basic Linux utilities

This is short guide on how to convert strings and decimal values to hexadecimal and vice-versa using simple Linux utilities such as xxd and printf.

1. To convert a string to hexadecimal, you can use xxd in Linux.

For example: To convert a string “kali” to hexadecimal, you can use the below format.

```[email protected]:~\$ echo -n kali | xxd
00000000: 6b61 6c69 kali
```

To group and display the output a single character at a time, use -c  flag with argument 1.

```[email protected]:~\$ echo -n kali | xxd -c1
00000000: 6b k
00000001: 61 a
00000002: 6c l
00000003: 69 i
```

This means the following:

```00000000: 6b k <- k is a single character and its hexadecimal value is 6b
00000001: 61 a <- a is a single character and its hexadecimal value is 61
00000002: 6c l <- l is a single character and its hexadecimal value is 6c
00000003: 69 i <- i is a single character and its hexadecimal value is 69
```

2. Convert Hexadecimal value back to string:

```[email protected]:~\$ echo -n "6b61 6c69" | xxd -r -p
kali
```

Dont worry about the spaces, it should still work.

```[email protected]:~\$ echo -n "6b616c69" | xxd -r -p
kali[email protected]:~\$```

3. Convert decimal (number) to hexadecimal

-Lets say you want to convert number 12 to decimal value. To do so, you could use printf as shown below.

```[email protected]:~\$ printf "%x\n" 12
c
```

From above output, the hexadecimal value for number 12 (aka decimal 12) is character c.

To find hexadecimal values for values from 1 to 255, you could run through it in a loop

``for num in {1..255}; do printf "%x\n" \$num ; done | less``

Hope these help.

PS: Knowing hexadecimal does come in handy while learning/debugging different protocols.