トップページへ

Linuxで16進数の足し算をする方法

小粋空間 » Linux » Linuxで16進数の足し算をする方法

Linuxで16進数の足し算をする方法を紹介します。

1.問題点

仕事で、Linuxのシェルで下記の16進数の足し算をする必要が生じました。

35dbdf123 + 8

とりあえずコマンドライン上で16進数の足し算をしてみようと思ったのですが、方法が分かりません。

ということで、コマンドラインで16進数の足し算をする方法を紹介します。

2.コマンドラインで16進数の足し算をする

コマンドラインで16進数の足し算をするには、次のようにします。

% echo "obase=16;ibase=16;35DBF123+8" | bc
35DBF12B

これで目的の計算結果を得ることができました。

3.bcについて

bcは、Lunuxのmanコマンド上は「任意精度の計算言語」のためのコマンドと定義されています。

ibase、obaseはbcコマンドの特殊変数で、

となっています。

それぞれのデフォルト値はともに10(10進数)ですが、今回の例では16進数である"16"を指定します。

また、ibaseとobaseの指定順序はobaseを先に記述することを推奨します。

この例でibaseを先に指定してしまうと、ibaseの指定がobaseに反映されてしまい、obaseを16進数で指定しなければならなくなります。

ibaseを先に指定した場合の計算結果(期待通りにならない)

% echo "ibase=16;obase=16;35DBF123+8" | bc
 07 21 07 07 13 15 21

obaseを16進数で"16(10)"を指定した場合の計算結果(期待通り)

% echo "ibase=16;obase=10;35DBF123+8" | bc
35DBF12B

ということで、10進数で指定するためにobaseを先に指定することを推奨します。

変換基数を指定した後、実際の計算情報"35DBF123+8"を記述します。

16進数の場合、計算値に"0-9"および"A-F"を利用できます。

A-Fは大文字でなければなりません。小文字で計算すると下記のシンタックスエラーになります。

% echo "obase=16;ibase=16;35dbf123+8" | bc
(standard_in) 1: syntax error

« 前の記事へ

次の記事へ »

トップページへ