Ruby で PHP の base_convert() のような基数変換を簡単に実装してみる
基数変換は、ハッシュやキーなどの処理で必要になることがある。PHP では base_convert 関数があるので簡単だ。
Ruby にはないのかと思っていたら String, Integer クラスの to_i, to_s にはそれぞれ基数を引数に渡せることがわかった。よって、この二つを組み合わせれば簡単に実装可能だ。
base_convert.rb
2 から 36 進数まで対応できる。
def base_convert(strnum, from, to) return strnum.to_i(from).to_s(to) end
irb で試す
irb(main):001:0> require "base_convert" => true irb(main):002:0> base_convert("1111", 2, 16) => "f" irb(main):003:0> base_convert("11111111", 2, 16) => "ff" irb(main):004:0> base_convert("FF", 16, 2) => "11111111" irb(main):005:0> base_convert("f", 16, 2) => "1111" irb(main):006:0> base_convert("ffff", 16, 36) => "1ekf" irb(main):007:0> base_convert("1ekf", 36, 10) => "65535"