私はUbuntuでbashファイルを使用しており、このファイルに16進数を使用する必要のある実行可能コードを記述しました。
しかし、私は10進数を持っているだけなので、何らかのコマンドで10進数を16進数に自動的に変換したいと思います。
これは私のコードの一部です:
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
このセクションの「u32ht2:$ x:」のコードでは、「$ x」は16進形式である必要があり、他のセクションでは10進形式である必要があります。しかし、私の問題は16進形式です。コードで変換して使用するにはどうすればよいですか?
10進数を16進数に変換するコマンドは次のとおりです。
echo "obase=16; decimal-number"|bc
ここで、decimal-number 1進数を置き換えます。 GNU bc
はインタラクティブな計算言語です。obase
は出力数の変換ベースを定義します。
ユーザーに番号の入力を求める代替コマンド:
printf "Type a number: " && read dec && printf -v hex "%x" $dec && echo $hex
Awkを使用できます Velourライブラリ :
$ velour -n 'print n_baseconv(15, 10, 16)'
F
または:
$ velour -n 'print n_baseconv(ARGV[1], 10, 16)' 15
F