2011-12-12 64 views
0

Python新手。我想要將字符數組轉換爲字節緩衝區,即有什麼方法將可能是字符串或二進制數據的數據轉換爲字節緩衝區。字符串/二進制數據到字節

例如:如果str = 'apple'我需要緩衝,我可以訪問諸如buffer[i]buffer[:j]

如果我使用map(ord,'apple')這將返回一個列表,但我需要一個連續的緩衝區的'apple' =字節值。我如何在Python中得到這個?

更新1:另外我需要字節,因爲今天它可能是字符串,但明天我可能會處理文件。

UPDATE 0:我想要它的字節數。我可以使用字符串作爲@ignacio建議,但字符串不會做。因爲最終這將進入我的滾動哈希執行

+0

這有什麼錯切串? –

+0

我想要它以字節爲單位。弦不會做。因爲最終這將進入我的滾動哈希的實現。 – Inception

+0

如果您使用Python 3.x,那麼這是需要進入問題的重要信息。 –

回答

0

您可以在Python中使用struct模塊。

的結構模塊包括用於 字節串和原生的Python數據類型,如數字和字符串之間的轉換功能。

3

嘗試bytearray。它會將源字符串轉換爲一個字節數組。如果default encoding不是當前的默認字符串編碼,則需要指定一個可選的編碼參數。

>>> s = 'apple' 
>>> arr=bytearray(s) 
>>> [x for x in arr] 
[97, 112, 112, 108, 101] 
>>> type(arr) 
<type 'bytearray'> 
>>> 
+0

abhijit,謝謝你的回覆。但我不想要列表中的字節。我想要一個緩衝區。如果我想要列表,我本可以使用'ord'。但後來我可能想將文件轉換爲字節。在這種情況下,字節緩衝區是有意義的。它回答了我所有的用例。那麼我如何在緩衝區而不是列表中獲得這個呢? – Inception

+0

它不是一個列表,而是一個數組。只要看看所創建的變量的類型。我已經使用列表理解來列出內容,但將其存儲爲字節數組。希望這是有道理的。 – Abhijit

+0

就像緩衝區一樣是bytearray。我可以做'arr [i]'等嗎? – Inception