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

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

Posted at December 22,2017 12:03 AM
Tag:[Linux]

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コマンドの特殊変数で、

  • ibase:入力の変換基数を指定
  • obase:出力の変換基数を指定

となっています。

それぞれのデフォルト値はともに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
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)