2016-08-17 62 views
-3

我目前正在嘗試使用實際表示其他數據類型的整數數組並將其轉換爲正確的數據類型。因此,例如,如果我有整型數組[1196773188,542327116],我發現這個整數數組表示一個來自其他函數的字符串,將其轉換並實現,它表示字符串「DOUGLAS」。第一個數字轉換爲十六進制數字0x47554F44,第二個數字表示十六進制數字0x2053414C。使用一個十六進制到字符串轉換器,它們分別對應字符串'GOUD'和'SAL',以小尾數方式拼寫DOUGLAS。數組的單個元素中字母向後的方式可能源於字節以litte endian方式存儲,儘管我可能會誤解這些。如何獲取整數數組並將其轉換爲其他類型?

這些整數數組可以表示一些數據類型,包括字符串,布爾值和浮點數。

我需要使用Python 2.7,所以我不幸地不能使用字節功能。

有沒有一種簡單的方法將整數數組轉換爲相應的數據類型?

+5

這個整數列表應該代表「DOUGLAS」?字符串和整數列表之間沒有自然的默認對應關係。最有可能的是,執行這種轉換需要一些你沒有告訴我們的信息,以及你可能沒有打算保留的信息(在這種情況下,這是一個失敗的原因)。 – user2357112

+1

1st看起來你有一個列表:'type([1196773188,542327116])''>'第二種將數據轉換爲另一種數據的方式是讓一些規則/過程轉換它。如果你知道如何將[1196773188,542327116]轉換爲「DOUGLAS」的規則,那麼我會假設轉換的相同過程可以與其他數據一起工作。雖然我沒有看到相關性。 –

+0

編輯以解釋整數轉換爲「DOUGLAS」的原因 – GenericAlias

回答

2

看來,結構模塊是這樣的不同類型之間進行轉換時,最好的方法:

import struct  

bufferstr = "" 
dougarray = [1196773188, 542327116] 
for num in dougarray: 
    bufferstr += struct.pack("i", num) 

print bufferstr # Result is 'DOUGLAS' 

從這一點上,我們可以'道格拉斯很容易地轉換到我們想要使用結構的任何數據類型。 ():

print struct.unpack("f", bufferstr[0:4]) # Result is (54607.265625) 

但是,我們一次只能解壓一定數量的字節。謝謝大家的建議!

相關問題