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コマンドの特殊変数で、
- 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
Posted by yujiro このページの先頭に戻る
- VMをundefineできない場合の対処
- cpanflute2でエラーになる場合の対処
- シェルスクリプトをバイナリ化する「shc」
- OpenSSLで文字列を暗号化・複号化する方法
- sshログインに時間がかかる場合の対処
- vi/vimで範囲指定して置換する方法
- vi/vimでマークした行に移動する方法
- vi/vimで複数行を一括削除する方法
- LinuxでOSキャッシュをクリアする方法
- lessで検索文字列だけを表示する方法
- tailコマンドでファイルがローテートされても追従する方法
- svnでファイルやディレクトリを削除する方法
- phpMyAdminで「unknown system variable 'lc_messages'」となる場合の対処
- Linux(CentOS)でapxsがみつからない場合の対処
- PHP7.3とApacheを連携させる方法
トラックバックURL
コメントする
greeting