Muito interessante esta dica que vi no "Advanced Bash-Scripting Guide"
do Mendel Cooper  [ http://tldp.org/guides.html ]  e, inclusive,
publiquei no meu blog com um adendo sobre fazer o mesmo usando o bc
que todo mundo deve estar careca de saber.

Com Bash, podemos representar números nas mais variadas bases, desde 2
até 64 usando o operador # como no exemplo abaixo:

X=101
for BASE in 2 8 10 16 32 64 ; do
    echo "$X na base $BASE eh $(( ${BASE}#${X} ))" # conversao pra decimal
done
101 na base 2 eh 5
101 na base 8 eh 65
101 na base 10 eh 101
101 na base 16 eh 257
101 na base 32 eh 1025
101 na base 64 eh 4097

echo $((16#FF)) $((32#V))
255 31

echo $((64#z))  $((64#Z))  $((64#@))  $((64#_)) # atenção nos 2 ultimos!
35 61 62 63


Além de ser possível usar a notação de octal e hexa do C (iniciar a
expressão com 0 e 0x, respectivamente)

echo $((10)) $(( 010 )) $(( 0x10 )) $((10 + 010 + 0x10))
10 8 16 34

-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/

Responder a