Как преобразовать десятичное в шестнадцатеричное в Ubuntu?
Я использую файл 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" должен быть в шестнадцатеричной форме, а в другом разделе - в десятичной форме. Но моя проблема в шестнадцатеричной форме. Как я могу преобразовать его в мой код и использовать его?
2 ответа
Команда для преобразования десятичного числа в шестнадцатеричное:
echo "obase=16; decimal-number"|bc
где для десятичного числа заменить десятичное число. GNU bc
это язык интерактивного калькулятора. obase
определяет базу преобразования для выходного числа.
Альтернативная команда, которая предлагает пользователю ввести число:
printf "Type a number: " && read dec && printf -v hex "%x" $dec && echo $hex
Вы можете использовать библиотеку awk Velor:
$ velour -n 'print n_baseconv(15, 10, 16)'
F
Или же:
$ velour -n 'print n_baseconv(ARGV[1], 10, 16)' 15
F