LINUX.ORG.RU

Как в shell-скрипте получить в переменную числовое значение из hex-строки

 


0

1

Есть строки с шестнадцатиричными числами. Допустим, я читаю их с помощью read в цикле в переменную. Никак не могу сообразить, что нужно сделать, чтобы значение, записываемое в переменную воспринималось, как число, и со значением переменной можно было бы выполнять арифметические действия.

Проще использовать Python.

saahriktu ★★★★★
()

Сегодняшний GNU bc является результатом многочисленных усовершенствований предыдущих реализаций, и сегодня он представляет собой стандарт для всех главных дистрибутивов GNU/Linux. bc поддерживает стандартные арифметические операции с числами произвольной точности и различных систем счисления (двоичные, десятеричные, шестнадцатеричные). (с) http://rus-linux.net/MyLDP/consol/calculator-bc.html

Подробности в манах.

shell-script ★★★★★
()
Ответ на: комментарий от kardjoe

А ты по ссылке то прошел?)

Чтобы значение, записываемое в переменную воспринималось, как число, нужно сконвертировать его в десятичную форму. Задача решена.

Так что:

Вызывающе неверная информация.

wandrien ★★
()
Ответ на: комментарий от kardjoe

Сходил еще раз. Понял, что затупил, их прямо так можно в арифметические выражения сувать, и даже с прификсом 0x. Плохо знаю bash.

После внимательного прочтения ссылки оказалось, что 4.2 еще более 4.2.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от imb

printf "%d" 0xa

Конец строки забыл, однако:

printf "%d\n" 0xCCA1
anonymous
()
Ответ на: комментарий от kardjoe

воркэраунд

Срамота, не знаешь как это на родном языке сказать. =)

anonymous
()
Ответ на: комментарий от kardjoe

А ты по ссылке то прошел?)

Далась вам та ссылка. Накой там все с этим printf нянчатся, если

$ v=CCA1
$ rez=$((0x$v))
$ echo $rez
52385
-- всё просто, понятно и удобно.

vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.