在Ruby中解码十六进制字符串

时间:2012-03-30 13:31:36

标签: ruby

  

可能重复:
  Hex to binary in ruby

在Python中,我可以执行以下操作:

>>> str = '000E0000000000'
>>> str.decode('hex')
'\x00\x0e\x00\x00\x00\x00\x00'

如果我必须在ruby中获得相同的输出,我可以调用吗?我试过了to_s(16),这似乎不起作用。我需要输出采用特定格式,因此我希望得到以下内容:

"\\x00\\x0e\\x00\\x00\\x00\\x00\\x00"

1 个答案:

答案 0 :(得分:11)

irb(main):002:0> [str].pack('H*')
# => "\x00\x0E\x00\x00\x00\x00\x00"

或(仅限Ruby 1.9):

irb(main):004:0> str.scan(/../).map(&:hex).map(&:chr).join
# => "\x00\x0E\x00\x00\x00\x00\x00"

如果您需要格式化的字符串:

irb(main):005:0> s = str.scan(/../).map { |c| "\\x%02x" % c.hex }.join
=> "\\x00\\x0e\\x00\\x00\\x00\\x00\\x00"
irb(main):006:0> puts s
\x00\x0e\x00\x00\x00\x00\x00
=> nil
相关问题