bcコマンドで10進数と2進数の相互変換
Linux環境にデフォルトで入っているbcというコマンドで進数変換をする あんまりbcコマンドには詳しくないが、ibaseとobaseのことはシェル芸botで多少見たので知っていた 計算用のコマンドなのだけれど、進数変換もできる
10進数から2進数へ
$ echo "obase=2; ibase=10; 15" | bc
1111
ibase=10つまり、入力(input)データのbase(基底)は10進数である という指定
obase=2つまり、出力(output)データのbase(基底)は2進数にする という指定
それぞれセミコロンで区切って、最後に入力データを書く
2進数から10進数へ
$ echo "obase=10; ibase=2; 1111" | bc
15
これ、obaseとibaseの順序逆だと正常に動かなくてハマった
$ echo "ibase=2; obase=10; 1111" | bc
1111
8進数、16進数変換は以下を参考にする