Ruby 10進数を2進数に変換する

Ruby 10進数を2進数に変換する

Rubyで、10進数を2進数に変換するソースコードを記述してます。「to_i」メソッドの引数に「2」を指定すれば変換できます。変換対象は文字列なので数値から変換する場合は文字列に変換する必要があります。ここでは逆に10進数から2進数に変換する方法も記述してます。

環境

  • OS windows11 home
  • ruby 3.1.3p185

10進数を2進数に変換

10進数を2進数に変換するには、 「to_i」メソッドの引数に「2」を使用します。

数値の文字列.to_i(2)

実際に、変換してみます。

p "11".to_i(2) # 3

p "111".to_i(2) # 7

p "1111".to_i(2) # 15

変換されていることが確認できます。

数値にそのまま「to_i」を使用するとエラーになるので、数値に使用する場合は1度文字列に変換します。

p 11.to_i(2) # エラーが発生 `to_i': wrong number of arguments (given 1, expected 0) (ArgumentError)

p 11.to_s.to_i(2) # 変換してから使用する

n進数へ変換

2進数以外にも、引数に変換したい進数を指定すれば、変換することができます。
※「0, 2 – 36」 以外は指定できません。

# 8進数
p "11".to_i(8) # 9

# 16進数
p "ff".to_i(16) # 255

# 32進数
p "gg".to_i(32) # 528

# 36進数
p "zz".to_i(36) # 1295

2進数から10進数に変換

逆に2進数から10進数に変換する場合は「to_s」を使用します。

p 2.to_s(2) # "10"

p 8.to_s(2) # "1000"

p 255.to_s(2) # "11111111"

こちらも、2進数以外にも、引数に変換したい進数を指定すれば、変換することができます。

p 255.to_s(8) # "377"

p 255.to_s(16) # "ff"

p 255.to_s(32) # "7v"

p 255.to_s(36) # "73"