我有例如
tab = [0x51, 0x3c, 0xb8, 0x15]
然后我想将此表转换为整数
0x15b83c51 = 363323840
任何想法?
答案 0 :(得分:1)
可能的解决方案:
> tab.reverse.inject("") {|s,a| s<<a.to_s(16) }.to_i(16)
=> 364395601
答案 1 :(得分:0)
我对ruby中的位/十六进制函数不是很熟悉,如果它不是更具体或更准确,那就很抱歉,但是......你试过:
bitnum = 0
while hexnum = tab.pop do
# 1. convert hexnum to binary format
# 2. bit-shift bitnum accordingly
end
答案 2 :(得分:0)
tab.reverse.inject {|s,a| (s<<8) + a}
# => 364395601
答案 3 :(得分:0)
(我不知道你是如何从363323840
获得0x15b83c51
的。与已经回复的其他人一样,0x15b83c51
是364395601
)
这是另一种解决方案,如果您在表中有多个要解码的整数,它也可以使用。
# Convert to binary string
binaryString = [0x51, 0x3c, 0xb8, 0x15].map(&:chr).join
# Convert the binary string to an unsigned integer array
# and take its first element
number = binaryString.unpack("I").first