Я использую файл 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 ответа2

1

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

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

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

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

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

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

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

Или же:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .