Eu tenho usado bc
para converter números entre binário para hexadecimal, octal para decimal e outros.
No exemplo a seguir, eu estava tentando converter o número de base 16 (hex) em binário, octal e decimal.
Eu não tenho nenhum problema com as primeiras 2 tentativas.
$ echo 'ibase=16; obase=2; FF' | bc
11111111
$ echo 'ibase=16; obase=8; FF' | bc
377
Mas quando tentei converter o número de base 16 (hex) para base 10 (decimal), estava recebendo a resposta errada. A resposta deve ser255
$ echo 'ibase=16; obase=10; FF' | bc
FF
Uma vez
ibase=16
feito, outros números de entrada estão em hexadecimal, incluindo 10 noobase=10
qual representa o valor decimal 16. Portanto, defina obase antes ou depois, usando a nova base de entrada (agora hexadecimal):