web-dev-qa-db-ja.com

Ubuntuで10進数を16進数に変換するにはどうすればよいですか?

私は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進形式です。コードで変換して使用するにはどうすればよいですか?

1
samie

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  
1
karel

Awkを使用できます Velourライブラリ

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

または:

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