可能重复:
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"
答案 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