Чи підтримує bc шістнадцятковий розрахунок?


20

Я намагаюся зробити hexрозрахунок безпосередньо за допомогою bc, я вже вказав шкалу.

echo 'scale=16;c06b1000-c06a5e78' | bc

Але я все одно отримую нуль. Що може бути не так?


Хоча технічно це не відповідь на ваше запитання, ви можете розглянути moo (1) замість bc (1).

Відповіді:


33
echo 'ibase=16;C06D1000-C06A5E78' | bc
176520

Зауважте, що підтримуються лише шістнадцяткові цифри UPPER CASE, оскільки великі регістри суперечать іменам функцій та змінних, тому ви отримали 0 у своєму прикладі ( var1 - var2)

Якщо вам потрібна відповідь у шістнадцятковій формі, просто встановіть obaseзмінну:

echo 'obase=16;ibase=16;C06D1000-C06A5E78' | bc
2B188

PS: FYI scaleне розроблений для перетворення бази. Від man bc:

scale defines how some operations use digits after the decimal point.
The default value of scale is 0.

Тож справжня відповідь на тему «що може бути не так» полягає в тому, що bc підтримує UPPER CASE лише для шістнадцяткових цифр з кредитами для редактора Stephane.
Роланд

Зверніть увагу, що важливо встановити obaseперед налаштуванням ibase. Якщо ви встановите ibaseспочатку, то це також впливає на значення, проаналізовані для obase. тобто ibase = 16; obase = 16;встановлюється obaseна 0x16 = 22
Arnavion
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.