В оболочке доступны различные инструменты. 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
- «настольный расчет». Он также будет принимать входные данные со стандартного ввода, например bc
, но вместо использования «порядка операций» он использует нотацию стекирования («обратную польскую»). Вы даете ему входные данные, которые он добавляет в стек, затем даете ему операторы, которые выталкивают элементы из стека и возвращают результаты.
В приведенных выше командах мы получили следующее:
16i
- сообщает DC принимать ввод с основанием 16 (шестнадцатеричный). Не меняет базу выпуска.
BFCA3000
- ваш начальный номер
17FF
- случайное шестнадцатеричное число, которое я выбрал для вычитания из вашего начального числа
-
- возьмите два числа, которые мы вставили, и вычтите последнее из более раннего, затем поместите результат обратно в стек
p
- распечатать последний элемент в стопке. Это не меняет стек, так что ...
10o
- указывает dc печатать свой вывод в базе «10», но помните, что наша схема нумерации входных данных в настоящее время шестнадцатеричная, поэтому «10» означает «16».
p
- снова распечатать последний элемент в стопке ... на этот раз в шестнадцатеричном формате.
Вы можете создавать невероятно сложные математические решения с помощью постоянного тока. Это хорошо, если в вашем наборе инструментов есть сценарии оболочки.