2011-07-19 46 views
0

我有例如陣列字節爲num

tab = [0x51, 0x3c, 0xb8, 0x15] 

然後我想轉換此表爲整數

0x15b83c51 = 363323840 

什麼想法?

回答

0

我不是很熟悉紅寶石位/十六進制的功能,很抱歉,如果它不是更具體的或準確的,但是......你試圖:

bitnum = 0 
while hexnum = tab.pop do 
    # 1. convert hexnum to binary format 
    # 2. bit-shift bitnum accordingly 
end 
1

可能的解決方案:

> tab.reverse.inject("") {|s,a| s<<a.to_s(16) }.to_i(16) 
=> 364395601 
0
tab.reverse.inject {|s,a| (s<<8) + a} 
# => 364395601 
0

(我不知道你如何從0x15b83c51363323840。像其他人已經回答了,0x15b83c51364395601

這是另一種解決方案,如果您的表中有多個要解碼的整數,這也是有效的。

# 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