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"