3

我正在尝试将字符串转换为二进制文件:

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

但我收到“参数数量错误(1 到 0)”错误。

关于如何进行的任何建议?

4

3 回答 3

6

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

puts "The number you gave in binary is " + num1.to_i.to_s(2)
于 2018-04-28T19:02:43.283 回答
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
于 2018-04-28T19:45:37.337 回答
1

to_s方法适用于很多事情,其中​​一些事情需要参数,有些则不需要。例如,在 String 上不会,但在 Integer 上会。

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

binary = input.to_i.to_s(2)

to_i如果您需要从二进制转换回整数,该方法还需要参数:

decimal = binary.to_i(2)
于 2018-04-28T19:30:22.727 回答