我的问题是如何将来自cmd ARGV或gets的STDIN从十六进制转换为ASCII码。
我知道如果我将十六进制字符串分配给变量,它将在打印时自动转换。
例如:
hex_var = "\x41\41\x41\41"
puts hex_var
结果将会是
AAAA
但我需要通过命令行(ARGV或gets)获取值。
比如我有以下代码:
s = ARGV
puts s
# another idea
puts s[0].gsub('x' , '\x')
然后我运行了。
ruby gett.rb \x41\x41\x41\x41
我收到了:
\x41\x41\x41\x41
有没有办法让它工作?
ARGV.each do |s| s = s.gsub('x' , '\x') p eval('"%s"' % s) end
- KING SABRIruby gett.rb "#{system('touch ~/security-fail')}"
。然后想一想如果有人使用rm -rf
会发生什么... 除非你百分之百信任所有当前和未来的用户,否则最好不要使用eval
。甚至可能连这都不行。 - Lars Haugseth