シェルスクリプトで数値をN進数に変換する方法
はじめに
競技プログラミングで問題を解いているときによく出題される問題として、 数値を N 進数表記に変換する というものがあります。
プログラミング言語だとかんたんなのですが、シェルスクリプトでやろうとすると普段やらないためやり方が分からずハマってしまいます。
変換方法を紹介します。
検証環境
Bash 組み込みの算術演算を利用する
これが最もかんたんです。
10101
を変換してみます。
ポイントは数値の前に N#
のように基数を指定する点です。
ただし、N進数から10進数への変換しかできません。
bc
コマンドを利用する
bc
コマンドに標準入力で計算式を渡してやります。
その際に、インプット時の基数、アウトプット時の基数を指定してやります。
(obase、ibaseの記述順序に注意!)
Bashの「算術式」機能を利用する
Bashでは、 $((...))
で括られた内側に計算式を記述する事ができます。(「算術式」)
特殊な記法を利用することで、 N進数から10進数 への変換が可能です。
残念ですが逆はできません。
ひとこと
どんなときでも bc
を使っておいたら間違いなさそうです。
ディスカッション
コメント一覧
まだ、コメントがありません