使用to_s(2)在ruby中将变量转换为二进制时接收错误

时间:2018-04-28 18:59:20

标签: ruby

我试图将字符串转换为二进制文件:

puts "Tell me a number:"
num1 = gets
puts "The number you gave in binary is " + num1.to_s(2)

但我得到的错误数量的参数(1到0)和#34;错误。

有关如何进行的任何建议吗?

3 个答案:

答案 0 :(得分:6)

您需要将您获得的字符串转换为数字

puts "The number you gave in binary is " + num1.to_i.to_s(2)

答案 1 :(得分:4)

最简单的方法是将Kernel#sprintfb字段类型一起使用。

sprintf("%b", gets)

例如,

sprintf("%b", "34\n")
  #=> "100010"

这也可以写成

"%b" % gets

因此,您可以编写以下内容。

puts "Tell me a number:"
puts "The number you gave in binary is %b" % gets

如果用户输入"34\n",则会打印

The number you gave in binary is 100010

答案 2 :(得分:1)

许多事情都存在to_s方法,其中一些方法需要参数,有些则不参与。例如,在一个字符串上它不会,但它在一个整数上。

要转换为二进制文件,您需要将该输入字符串转换为整数,然后将字符串转换为二进制值:

binary = input.to_i.to_s(2)

如果需要从二进制转换回整数,to_i方法也会接受参数:

decimal = binary.to_i(2)