Ruby Tips!

RubyのTipsを紹介します

2進、8進、10進、16進数を相互に変換する

文字列を数値に変換する

2進数などで書かれた文字列を数値に変換するにはKernel.#IntegerまたはString#to_iを使う。String#to_iは基数が指定できるため、文字列に0xなどの接頭子が無くても数値に変換することができる。

p Integer("0b11111111") #=> 255
p Integer("0377") #=> 255
p Integer("255") #=> 255
p Integer("0xFF") #=> 255

p "11111111".to_i(2) #=> 255
p "377".to_i(8) #=> 255
p "255".to_i(10) #=> 255
p "FF".to_i(16) #=> 255

数値を文字列に変換する

数値を2進、8進、10進、16進数の各文字列に変換するには、String#%を使って以下のようにする。これはKernel.#sprintfと同じである。bは2進数、oは8進数、dは10進数、xは16進数を示すフォーマット文字列だ。

p "%#+b" % 255 #=> "+0b11111111"
p "%#+o" % 255 #=> "+0377"
p "%#+d" % 255 #=> "+255"
p "%#+x" % 255 #=> "+0xff"