Ruby 将带有十六进制ASCII码的字符串转换为字符
我有一个包含ASCII字符的十六进制代码值的字符串,例如Ruby 将带有十六进制ASCII码的字符串转换为字符,ruby,ascii,Ruby,Ascii,我有一个包含ASCII字符的十六进制代码值的字符串,例如“666f6f626172”。我想将其转换为相应的字符串(“foobar”) 这是可行的,但很难看: "666f6f626172".scan(/../).map(&:hex).map(&:chr).join # => "foobar" 有更好(更简洁)的方法吗?解包是否有帮助?您可以使用: H是十六进制字符串的指令(先高半字节)。Stefan已经锁定了它,但这里有一个替代方案,您可能希望在另一个时间和地点折叠起来:
“666f6f626172”
。我想将其转换为相应的字符串(“foobar”
)
这是可行的,但很难看:
"666f6f626172".scan(/../).map(&:hex).map(&:chr).join # => "foobar"
有更好(更简洁)的方法吗?解包是否有帮助?您可以使用:
H
是十六进制字符串的指令(先高半字节)。Stefan已经锁定了它,但这里有一个替代方案,您可能希望在另一个时间和地点折叠起来:
"666f6f626172".gsub(/../) { |pair| pair.hex.chr } # => "foobar"
类似于[“666f6f626172”].pack('H*)
?@Stefan。是的,像那样。你能把这个作为答案吗?pack
/unpack
对我来说永远是个谜。
"666f6f626172".gsub(/../) { |pair| pair.hex.chr } # => "foobar"