Content added Content deleted
imported>mutante mNo edit summary |
imported>mutante mNo edit summary |
||
Line 35: | Line 35: | ||
exit 0 |
exit 0 |
||
</highlightSyntax> |
</highlightSyntax> |
||
<pre> |
|||
./hex2dec.sh |
|||
Give me a hex number 523F |
|||
[0]: F = 15 * (16^0) = 15 * 1 = 15 |
|||
[1]: 3 = 3 * (16^1) = 3 * 16 = 48 |
|||
[2]: 2 = 2 * (16^2) = 2 * 256 = 512 |
|||
[3]: 5 = 5 * (16^3) = 5 * 4096 = 20480 |
|||
/*************************************/ |
|||
/* Result: 523F (hex) is 21055 (dec) */ |
|||
/*************************************/ |
|||
</pre> |
Revision as of 21:30, 12 November 2006
<highlightSyntax>
- !/bin/bash
- hex to decimal number converter
- mutante (s23.org) 11/2006
read -p "Give me a hex number " hex length=${#hex} i=0 result=0 let length-- pos=0 while [ $length -ge 0 ]; do digit=${hex:$length:1}
case "$digit" in A | a) ddigit=10;; B | b) ddigit=11;; C | c) ddigit=12;; D | d) ddigit=13;; E | e) ddigit=14;; F | f) ddigit=15;; [0-9]) ddigit=$digit;;
- ) echo "Bad input. Only 0-9 and a-f are allowed."; exit 1;;
esac factor=`echo "(16^$pos)" | bc` subresult=`echo "$factor*$ddigit" | bc` echo "[$pos]: $digit = $ddigit * (16^$pos) = $ddigit * $factor = $subresult" let result=$result+$subresult let pos++ let length-- done
echo "Result: $hex (hex) is $result (dec)" | boxes exit 0 </highlightSyntax>
./hex2dec.sh Give me a hex number 523F [0]: F = 15 * (16^0) = 15 * 1 = 15 [1]: 3 = 3 * (16^1) = 3 * 16 = 48 [2]: 2 = 2 * (16^2) = 2 * 256 = 512 [3]: 5 = 5 * (16^3) = 5 * 4096 = 20480 /*************************************/ /* Result: 523F (hex) is 21055 (dec) */ /*************************************/