我试图将字符串转换为二进制文件:
puts "Tell me a number:"
num1 = gets
puts "The number you gave in binary is " + num1.to_s(2)
但我得到的错误数量的参数(1到0)和#34;错误。
有关如何进行的任何建议吗?
答案 0 :(得分:6)
您需要将您获得的字符串转换为数字
puts "The number you gave in binary is " + num1.to_i.to_s(2)
答案 1 :(得分:4)
最简单的方法是将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
答案 2 :(得分:1)
许多事情都存在to_s
方法,其中一些方法需要参数,有些则不参与。例如,在一个字符串上它不会,但它在一个整数上。
要转换为二进制文件,您需要将该输入字符串转换为整数,然后将字符串转换为二进制值:
binary = input.to_i.to_s(2)
如果需要从二进制转换回整数,to_i
方法也会接受参数:
decimal = binary.to_i(2)