我有一个整数数组,范围从0
到255
,每个整数代表两个十六进制数字。我想使用Ruby将此数组转换为一个十六进制字符串。我该怎么做?
答案 0 :(得分:10)
使用pack
和unpack
:(或Ruby 2.4 +中的unpack1
)
[0, 128, 255].pack('C*').unpack('H*')[0]
#=> "0080ff"
[0, 128, 255].pack('C*').unpack1('H*')
#=> "0080ff"
pack('C*')
已经返回了实际的二进制十六进制字符串:
[0, 128, 255].pack('C*')
#=> "\x00\x80\xFF"
unpack('H*')
然后将其转换回人类可读的表示形式。
答案 1 :(得分:4)
我会做这样的事情:
array = [0, 128, 255]
array.map { |number| number.to_s(16).rjust(2, '0') }.join
#=> "0080ff"