
Я использую его bc
для преобразования чисел из двоичной системы в шестнадцатеричную, из восьмеричной в десятичную и другие.
В следующем примере я пытаюсь преобразовать число с основанием 16 (шестнадцатеричное) в двоичное, восьмеричное и десятичное.
У меня не возникло никаких проблем с первыми двумя попытками.
$ echo 'ibase=16; obase=2; FF' | bc
11111111
$ echo 'ibase=16; obase=8; FF' | bc
377
Но когда я пытался преобразовать число с основанием 16 (шестнадцатеричное) в число с основанием 10 (десятичное), я получал неправильный ответ. Ответ должен быть255
$ echo 'ibase=16; obase=10; FF' | bc
FF
решение1
После ibase=16
этого дальнейшие входные числа будут в шестнадцатеричном формате,включая10, в obase=10
котором представлено десятичное значение 16. Поэтому либо установите obase до, либо установите ее после, используя новую входную базу (теперь шестнадцатеричную):
$ echo 'obase=10; ibase=16; FF' | bc
255
$ echo 'ibase=16; obase=A; FF' | bc
255