我正在尝试将字符串转换为二进制文件:
puts "Tell me a number:"
num1 = gets
puts "The number you gave in binary is " + num1.to_s(2)
但我收到“参数数量错误(1 到 0)”错误。
关于如何进行的任何建议?
我正在尝试将字符串转换为二进制文件:
puts "Tell me a number:"
num1 = gets
puts "The number you gave in binary is " + num1.to_s(2)
但我收到“参数数量错误(1 到 0)”错误。
关于如何进行的任何建议?
您需要先将获得的字符串转换为数字
puts "The number you gave in binary is " + num1.to_i.to_s(2)
最简单的方法是将Kernel#sprintf与b
字段类型一起使用。
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
该to_s
方法适用于很多事情,其中一些事情需要参数,有些则不需要。例如,在 String 上不会,但在 Integer 上会。
要转换为二进制,您需要将该输入字符串转换为整数,然后转换为二进制值作为字符串:
binary = input.to_i.to_s(2)
to_i
如果您需要从二进制转换回整数,该方法还需要参数:
decimal = binary.to_i(2)