Ruby では Fixnum#to_s メソッドに 2 を引数として与えると、2進数表現の文字列になる。
こんな機能あったんだ、知らなかった。
2.1.1 :001 > 5.to_s => "5" 2.1.1 :002 > 5.to_s(2) => "101"
引数は 2 じゃなくてもいい。整数 n を与えると n を基数とした数値表現になる。
2.1.1 :003 > 5.to_s(10) => "5" 2.1.1 :004 > 15.to_s(16) => "f" 2.1.1 :005 > 36.to_s(36) => "10" 2.1.1 :006 > 36.to_s(37) ArgumentError: invalid radix 37 from (irb):6:in `to_s' from (irb):6 from /home/takatoh/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>'
基数36までは OK で、37になるとダメみたいだ。
一方、Python では2進数に変換する bin 関数がある。
>>> bin(5) '0b101'
頭に 0b がついてしまうので、とってやる。
>>> bin(5)[2:] '101'
ちなみに、8進数にするには oct、16進数にするには hex 関数がある。
>>> oct(15) '017' >>> hex(15) '0xf'