
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 um número de base 16 (hex) em binário, octal e decimal.
Não tenho nenhum problema com as 2 primeiras tentativas.
$ echo 'ibase=16; obase=2; FF' | bc
11111111
$ echo 'ibase=16; obase=8; FF' | bc
377
Mas quando tentei converter o número da base 16 (hex) em base 10 (decimal), recebi uma resposta errada. A resposta deveria ser255
$ echo 'ibase=16; obase=10; FF' | bc
FF
Responder1
Feito isso ibase=16
, outros números de entrada estão em hexadecimal,Incluindo10 no obase=10
qual representa o valor decimal 16. Portanto, defina obase antes ou depois, usando a nova base de entrada (agora hexadecimal):
$ echo 'obase=10; ibase=16; FF' | bc
255
$ echo 'ibase=16; obase=A; FF' | bc
255