bc: Por que 'ibase = 16; obase = 10; FF 'retorna FF e não 255? [duplicado]

23

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.

Não tenho nenhum problema com as primeiras duas tentativas.

$ echo 'ibase=16; obase=2; FF' | bc  
11111111
$ echo 'ibase=16; obase=8; FF' | bc 
377

Mas quando tentei converter o número base 16 (hex) para a base 10 (decimal), eu estava recebendo uma resposta errada. A resposta deve ser 255

$ echo 'ibase=16; obase=10; FF' | bc 
FF
    
por Sabrina 25.08.2018 / 18:09

1 resposta

65

Uma vez que ibase=16 tenha terminado, mais números de entrada estão em hexadecimal, incluindo 10 em obase=10 , que representa o valor decimal 16. Então, defina como obase antes, ou configure depois, usando o nova base de entrada (agora hexadecimal):

$ echo 'obase=10; ibase=16; FF' | bc
255
$ echo 'ibase=16; obase=A; FF' | bc
255
    
por 25.08.2018 / 18:22

Tags