有我的代码:
var = "aa"
var2 = "bb"
var3 = "\x#{var}\x#{var2}"
我希望“var3”是十六进制的。
但错误消息是“无效的十六进制转义”。我该如何解决这个问题?
答案 0 :(得分:5)
这可能有所帮助:
var3 = "#{var.hex.chr}#{var2.hex.chr}"
答案 1 :(得分:1)
您的示例不起作用,因为\x
具有比字符串插值“更高的优先级”。
vars = [var, var2]
var3 = vars.pack('H*' * vars.size)
#⇒ "\xAA\xBB"
答案 2 :(得分:0)
另一种方法是:
[var, var2].map { |s| '\x' + s }.join
你能解释为什么你希望var3采用那种格式吗?如果要序列化值,那么另一种方法可能更简单,例如:
require 'yaml'
[var, var2].to_yaml
# or
{ var: var, var2: var2 }.to_yaml