2011-12-12 27 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