bc: Por que `ibase=16; base=10; FF` retorna FF e não 255?

bc: Por que `ibase=16; base=10; FF` retorna FF e não 255?

Tenho usado bcpara 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=10qual 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

informação relacionada