十六进制转义无效

时间:2016-04-21 14:46:47

标签: ruby string hex

有我的代码:

var = "aa"
var2 = "bb"
var3 = "\x#{var}\x#{var2}"

我希望“var3”是十六进制的。

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

3 个答案:

答案 0 :(得分:5)

这可能有所帮助:

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

答案 1 :(得分:1)

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

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

More info

答案 2 :(得分:0)

另一种方法是:

[var, var2].map { |s| '\x' + s }.join

你能解释为什么你希望var3采用那种格式吗?如果要序列化值,那么另一种方法可能更简单,例如:

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