Ruby:如何将整数列表转换为十六进制字符串?

时间:2016-11-18 17:12:02

标签: ruby

我有一个整数数组,范围从0255,每个整数代表两个十六进制数字。我想使用Ruby将此数组转换为一个十六进制字符串。我该怎么做?

2 个答案:

答案 0 :(得分:10)

使用packunpack :(或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"