Ruby 无效十六进制转义

Ruby 无效十六进制转义,ruby,string,hex,Ruby,String,Hex,这是我的代码: var = "aa" var2 = "bb" var3 = "\x#{var}\x#{var2}" 我希望“var3”是十六进制的 但错误消息是“无效十六进制转义”。如何解决这个问题?您的示例不起作用,因为\x比字符串插值具有“更高的优先级” vars = [var, var2] var3 = vars.pack('H*' * vars.size) #⇒ "\xAA\xBB" .这有助于: var3 = "#{var.hex.chr}#{var2.hex.chr}" 另一种

这是我的代码:

var = "aa"
var2 = "bb"
var3 = "\x#{var}\x#{var2}"
我希望“var3”是十六进制的


但错误消息是“无效十六进制转义”。如何解决这个问题?

您的示例不起作用,因为
\x
比字符串插值具有“更高的优先级”

vars = [var, var2]
var3 = vars.pack('H*' * vars.size)
#⇒ "\xAA\xBB"
.

这有助于:

var3 = "#{var.hex.chr}#{var2.hex.chr}"

另一种方法是:

[var, var2].map { |s| '\x' + s }.join
您能解释一下为什么希望var3采用这种格式吗?如果要序列化值,则另一种方法可能更简单,例如:

require 'yaml'
[var, var2].to_yaml
# or
{ var: var, var2: var2 }.to_yaml

你想要
var3
成为什么?请明确指定您期望的输出。
.hex.chr
解决方案有效,但这是最好的方法。