Python:将字符串转换为字节数组

时间:2012-07-24 04:29:43

标签: python

假设我有一个4个字符的字符串,我想将此字符串转换为字节数组,其中字符串中的每个字符都被转换为其十六进制等效字符串。 e.g。

str = "ABCD"

我正在尝试将输出设为

array('B', [41, 42, 43, 44])

有没有直接的方法来实现这个目标?

8 个答案:

答案 0 :(得分:48)

encode函数可以帮到你,编码返回字符串的编码版本

In [44]: str = "ABCD"

In [45]: [elem.encode("hex") for elem in str]
Out[45]: ['41', '42', '43', '44']

或者你可以使用数组模块

In [49]: import array

In [50]: print array.array('B', "ABCD")
array('B', [65, 66, 67, 68])

答案 1 :(得分:33)

只需使用bytearray()这是一个字节列表。

Python2:

s = "ABCD"
b = bytearray()
b.extend(s)

Python3:

s = "ABCD"
b = bytearray()
b.extend(map(ord, s))

顺便说一下,不要使用str作为变量名,因为它是内置的。

答案 2 :(得分:10)

获取字节数组的另一种方法是在ascii中对字符串进行编码:b=s.encode('ascii')

答案 3 :(得分:6)

这对我有用(Python 2)

s = "ABCD"
b = bytearray(s)

# if your print whole b, it still displays it as if its original string
print b

# but print first item from the array to see byte value
print b[0]

参考: http://www.dotnetperls.com/bytes-python

答案 4 :(得分:3)

s = "ABCD"
from array import array
a = array("B", s)

如果你想要十六进制:

print map(hex, a)

答案 5 :(得分:1)

根据您的需求,这可以是一个步骤或两个步骤

1. use encode() to convert string to bytes, immutable
2. use bytearray() to convert bytes to bytearray, mutable

s="ABCD"
encoded=s.encode('utf-8')
array=bytearray(encoded)

以下验证在Python 3.7中完成

>>> s="ABCD"
>>> encoded=s.encode('utf-8')
>>> encoded
b'ABCD'
>>> array=bytearray(encoded)
>>> array
bytearray(b'ABCD')

答案 6 :(得分:0)

对于python 3,它适用于@HYRY发布的内容。我需要它来作为dbus.array中的返回数据。这是它起作用的唯一方式

Excel.Application

从数组导入数组

Workbook_Open

答案 7 :(得分:0)

此功能在Python 2和3中均可使用

executor.json

注释字符串以>>> bytearray(b'ABCD') bytearray(b'ABCD') 开头。

要获取单个字符:

b

希望这会有所帮助