Как преобразовать десятичное в шестнадцатеричное в Ubuntu?

1148
samie

Я использую файл bash в Ubuntu, и я написал исполняемый код в этом файле, который должен использовать некоторое шестнадцатеричное число.

Но у меня просто есть десятичные числа, поэтому я хочу преобразовать десятичные числа в шестнадцатеричные числа автоматически с помощью какой-либо команды.

Это часть моего кода:

x=1 while [ $x -lt 255 ];do $tc filter add dev eth0 protocol ip parent 10:0 prio 5 u32 ht 2:$x: \ match ip dst 192.168.67.$x flowid 10:$x x=$(( $x + 1 )) done 

в этом разделе «u32 ht 2: $ x:» в моем коде «x» должен быть в шестнадцатеричной форме, а в другом разделе - в десятичной форме. Но моя проблема в шестнадцатеричной форме. Как я могу преобразовать его в мой код и использовать его?

0
Ваш вопрос очень расплывчатый. Пример вашего файла будет полезен. fpmurphy1 9 лет назад 0
[Преобразовать десятичное число в шестнадцатеричное в сценарии оболочки UNIX] (http://stackoverflow.com/a/379422) DavidPostill 9 лет назад 2
@ fpmurphy1 Я отредактировал свой вопрос. samie 9 лет назад 0

2 ответа на вопрос

1
karel

Команда для преобразования десятичного числа в шестнадцатеричное:

echo "obase=16; decimal-number"|bc 

где для десятичного числа заменить десятичное число. GNU bc- это язык интерактивного калькулятора. obaseопределяет базу преобразования для выходного числа.

Альтернативная команда, которая предлагает пользователю ввести число:

printf "Type a number: " && read dec && printf -v hex "%x" $dec && echo $hex 
1
Steven Penny

Вы можете использовать библиотеку awk Velor :

$ velour -n 'print n_baseconv(15, 10, 16)' F 

Или же:

$ velour -n 'print n_baseconv(ARGV[1], 10, 16)' 15 F 

Похожие вопросы