我尝试使用此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)!应该将该整数转换为二进制字符串。但显然,我没有得到什么。
答案 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}