2014-10-06 39 views
-1

我需要將浮點數,整數和字符串轉換爲字節數組。這是Python2.7。浮點數,int和str到字節數組 - python

我知道如何與花車和整數做到這一點(爲花車僅,例如,struct.pack("{}f".format(len(float_array)), float_array)),並用繩子我假設一個只想做list((map(ord, string)) for string in str_list)

那麼,有沒有辦法做到這一切,如果一切都混在一起。在最小的時候,我希望能夠混合浮點數和整數,而不必遍歷每一個。

如果我必須遍歷每一個,我怎麼能做到這一點快速和有效。 (注意:我必須通過一個數據列表 - 現在的每個數據都是一個float或一個int,但是我也知道哪個索引應該是int或float(但我不應該需要知道這一點) - 並且最好簡單地將列表轉換爲另一個字節數組列表(或者實際上只是一個字符串,例如「\ xasdf \ xadf \ xasdf」)。)

例如:[1, 1.0] ==>字節數組(或更復雜[1, 1.0, "a"] ==> bytearray

注:我得到一個錯誤,當我這樣做:

import struct 
num_list = [1, 1.0] 
num_struct = struct.pack("2f", num_list) 

而不是當我這樣做:

import struct 
num_list = [1.0, 2.0] 
num_struct = struct.pack("2f", num_list) 
+1

這不明顯,你想要什麼,你有什麼,以及你期望如何達到你的目標。請**舉例輸入和輸出**需要和*解釋*你一直在試圖做到這一點。 – Veedrac 2014-10-06 18:59:57

+0

我有一個int/float列表('[1,1.0]');我想要一個類似長度的列表,表示爲一個字節數組**和**我不想檢查每一個是for循環中的int還是浮點數。 – dylnmc 2014-10-06 19:01:36

+0

你想要什麼仍然不明顯; 「bytearray」是什麼意思? – Veedrac 2014-10-06 19:03:53

回答

4
def pack_all(lst): 
    fmt = ''.join('i' if isinstance(x, int) else 'd' for x in lst) 
    return struct.pack(fmt, *lst) 

這種處理整數和浮點數(雙尺寸)。字符串最好分開處理,最好使用encode

+0

謝謝。我猜;幸運的是,我只是找到了一種只有浮游物的方法。謝謝 – dylnmc 2014-10-06 19:13:11

+0

哦,我有另一個錯誤,所以包實際上處理整數和浮動... jynx – dylnmc 2014-10-06 19:14:08