Hex, Octal and Binary shell conversions
In scripting, it is common to find a need hexadecimal (hex or base 16) numbers, and occasionally binary numbers. Converting can be tricky without some tips. You can use printf, typeset and even bc as conversion tools. Here are some ideas:
HEX conversions
- Shell:
 HEX=1fa
 echo $((16#$HEX))
 506 or: DECIMAL=$((16#$HEX))
- typeset (shell):
 typeset -i16 HEX=506 (convert decimal to hex)
 echo $HEX
 16#1fa (typeset adds the base 16# and uses lowercase hex chars)
- printf:
 printf “%dn” 0x1fa (printf understands 0x for hex numbers)
 506and decimal to hex for printf:
 printf “%X %xn” 506 506 (printf uses X and x for UPPER and lower case)
 1FA 1fa
 or:
 
 printf “0x%X 0x%xn” 506 506 (add the 0x to flag as hex)
 0x1FA 0x1fa
- bc:
 HEX=1FA (mandatory UPPERCASE for bc)echo “ibase=16n$HEX” | bc
 506
 
OCTAL conversions
- Shell:
 OCTAL=772
 echo $((8#$OCTAL))
 506 or: DECIMAL=$((8#$OCTAL))
- typeset (shell):
 typeset -i8 OCTAL=506 (convert decimal to octal)
 echo $OCTAL
 8#772 (typeset adds the base 8#)
- printf:
 printf “%dn” 0772 (printf understands 0 prefix for octal numbers)
 506and decimal to octal for printf:
 printf “%on” 506
 772
 or:
 printf “0%on” 506 (add the leading 0 to flag as octal)
 0772
- bc:
 OCTAL=772
 echo “ibase=8n$OCTAL” | bc
 506
BINARY conversions
- Shell:
 BINARY=111111010
 echo $((2#$BINARY))
 506 or: DECIMAL=$((8#$BINARY))
- typeset (shell):
 typeset -i2 BINARY=506 (convert decimal to octal)
 echo $BINARY
 2#111111010 (typeset adds the base 2#)
- bc:
 BINARY=111111010
 echo “ibase=2n$BINARY” | bc
 506
– See more at: http://serviceitdirect.com/blog/hex-octal-and-binary-shell-conversions#sthash.DCLsFU93.dpuf
