З оболонки вам доступні різні інструменти. Sputnick дав вам чудовий огляд ваших варіантів, виходячи з вашого початкового запитання. Він, безумовно, заслуговує на голоси за час, який він витратив, даючи вам кілька правильних відповідей.
Ще один, якого немає в його списку:
[ghoti@pc ~]$ dc -e '16i BFCA3000 p'
3217698816
Але якщо все, що ви хочете зробити, це відняти, навіщо турбуватись про зміну входу на базу 10?
[ghoti@pc ~]$ dc -e '16i BFCA3000 17FF - p 10o p'
3217692673
BFCA1801
[ghoti@pc ~]$
dc
Команда «стіл вапняно». Він також буде брати вклад із stdin, якbc
, але замість того, щоб використовувати "порядок операцій", він використовує стекинг ("зворотна польська") позначення. Ви даєте йому вхідні дані, які він додає до стеку, потім даєте їм операторів, які вискакують елементи зі стека, і відштовхуються від результатів.
У командах вище ми отримали наступне:
16i
- каже dc приймати вхід у базу 16 (шістнадцятковий). Не змінює вихідну базу.
BFCA3000
- ваш початковий номер
17FF
- випадкове шістнадцяткове число, яке я вибрав, щоб відняти від вашого початкового числа
-
- візьміть два числа, які ми натиснули, і віднімемо наступне від попереднього, а потім повернемо результат назад на стек
p
- надрукувати останній елемент на стеку. Це не змінює стек, тому ...
10o
- каже dc друкувати його вихід у базі "10", але пам’ятайте, що наша схема нумерації вводу в даний час є шістнадцятковою, тому "10" означає "16".
p
- ще раз надрукуйте останній елемент у стеку ... цього разу шістнадцятково.
Ви можете побудувати казково складні математичні рішення за допомогою постійного струму. Це добре мати у своєму інструментарі для скриптів оболонок.