将hex字符串转换(解码)为二进制字符串

如何在Ruby "\x12\x34\x56\x78\x90" "1234567890"转换为"\x12\x34\x56\x78\x90"

试试这个:

 ["1234567890"].pack('H*') 

Ruby 1.8 –

 hex_string.to_a.pack('H*') 

Ruby 1.9 / Ruby 1.8 –

 Array(hex_string).pack('H*') 

假设您有一个结构良好的hex字符串(hex数字对),您可以简单有效地打包到二进制或解包为hex,如下所示:

 string = '0123456789ABCDEF' binary = [string].pack('H*') # case-insensitive => "\x01#Eg\x89\xAB\xCD\xEF" hex = binary.unpack('H*').first # emits lowercase => "012345679abcdef" 
 class String def hex2bin s = self raise "Not a valid hex string" unless(s =~ /^[\da-fA-F]+$/) s = '0' + s if((s.length & 1) != 0) s.scan(/../).map{ |b| b.to_i(16) }.pack('C*') end def bin2hex self.unpack('C*').map{ |b| "%02X" % b }.join('') end end 

如果您有一个包含数字的字符串,并且您希望将每个字符串扫描为数字hex字节,我认为这是您想要的:

 "1234567890".scan(/\d\d/).map {|num| Integer("0x#{num}")} 
 (0..4).map { |x| "0x%X" % (("1234567890".to_i(16) >> 8 * x) & 255) }.reverse 

您可能会发现在这篇文章中看一下会很有帮助