在Ruby中的基数之间转换

时间:2014-07-19 21:40:58

标签: ruby

我尝试使用此subreddit中的问题来学习Ruby。我正在a problem工作,要求我取一个包含一系列以空格分隔的十六进制值的字符串,然后将它们转换为二进制,并根据二进制值做一些工作。我看起来应该是一个有效的解决方案,但是当我运行它时我会遇到错误。这是代码:

print "enter: "

vals = gets.chomp.split

for i in 0...vals.length do
   vals[i].hex.to_s(2)!
end

vals.each {|x| puts x}

我收到以下错误消息:

test.rb:6: syntax error, unexpected '!', expecting keyword_end
test.rb:9: syntax error, unexpected end-of-input, expecting keyword_end

根据我的理解,.hex方法应该返回十六进制字符串的十进制值,并返回to_s(2)!应该将该整数转换为二进制字符串。但显然,我没有得到什么。

1 个答案:

答案 0 :(得分:2)

to_s之后的爆炸不是ruby上的有效语法。您可以拥有的是以!结尾的方法,例如chomp!。并且没有.to_s!方法。

您正在寻找的内容可以通过以下代码实现:

print "enter: "

vals = gets.chomp.split

for i in 0...vals.length do
     vals[i] = vals[i].hex.to_s(2)
end

vals.each {|x| puts x}