各種進数の変換をRubyを使って行う方法

Back


ターミナルからコマンドラインで実行

Rubyにはオプションを指定することによりターミナルでスクリプトを1行のコマ ンドで実行することが出来ます.その機能と数値表現で説明した0xや0bを数字の 前につける表現,そしてprintfを用いる際の引数表現である%xや%bな どを用いると,変換した結果を簡単に得ることが出来ます.

  1. 10進数から2進数

    $ ruby -e "printf \"%b\n\", 100"

  2. 10進数から8進数

    $ ruby -e "printf \"%o\n\", 100"

  3. 10進数から16進数

    $ ruby -e "printf \"%x\n\", 100"

  4. 2進数から10進数

    $ ruby -e "puts 0b10101010"

  5. 8進数から10進数

    $ ruby -e "puts 01234567"

  6. 16進数から10進数

    $ ruby -e "puts 0xabcdef"

  7. 2進数から16進数

    $ ruby -e "printf \"%x\n\", 0b10101010"

後はこれらの組合せでいくらでも可能です.

エディタでスクリプトを編集して実行

エディタでスクリプトを書く場合も上記と同じ方法ですが,上の例は引用符をエス ケープするためにバックスラッシュが多用されています.スクリプトの中ではエ スケープが必要ないので,例えば次のように簡単になります.

printf "%b, %d, %o, %x\n", 100, 100, 100, 100
printf "%d, %d, %d\n", 0b10101010, 012345, 0xabcdef

保存したスクリプトをターミナルからコマンドで実行するか, S@pphire のようなRuby実行環境を利用して作業して下さい.

その他の言語

printf という関数はRuby固有のものでなく,Cでも利用できるシステ ムの共有ライブラリ関数です.ですので,他にも多くの言語で利用できますので, 自分の得意なCでもperlでも好きな言語でほぼ同じ表現で実行可能です.また,C やperlでスクリプトを書いてS@pphireで実行することも可能です.


Back