Convert Hex to Dec and back again (BASH)

Hex gets used a lot, and it's more than possible to figure it out in your head - up to a point

This snippet contains 2 simple routes to convert between Hexidecimal and Decimal with a slightly modified version at the end which converts a hex string into ascii chars

Details

  • Language: BASH

Snippet

# If you don't mind piping to python
echo $HEX | python -c 'import sys; print(int(sys.stdin.read(), 16))'
echo $DEC | python -c 'import sys; print(hex(int(sys.stdin.read())).split("x")[-1])'

# Or, without using Python
printf "%d\n" 0x$HEX
printf "%x\n" $DEC
printf "%o\n" $DEC # For completeness - Octal

Usage Example

# Hex to dec
echo 0a0d | python -c 'import sys; print(int(sys.stdin.read(), 16))'
2573

# Dec to Hex
echo 65355 | python -c '`import sys; print(hex(int(sys.stdin.read())).split("x")[-1])`'
ff4b

# Hex to dec
printf "%d\n" 0x0a0d
2573

# Dec to hex
printf "%x\n" 65355
ff4b

# Dec to Oct
printf "%o\n" 25
31

# Take a string of Hex, extract the pairs, convert them to decimal and then to an Ascii char
echo -n 48656c6c6f20576f726c64a | python3 -c '`import sys,re; p=re.findall("..",sys.stdin.read()); [sys.stdout.write(chr(int(x,16)))for x in p];print("")`'
Hello World

# Again for completeness, the input for that was generated by converting Ascii to Hex
echo "Hello World" | python3 -c '`import sys; p=sys.stdin.read(); [sys.stdout.write(hex(ord(x)))for x in p]; print("")`' | sed 's/0x//g'
48656c6c6f20576f726c64a