首页 > 解决方案 > 使用python将字符串列表转换为具有相同长度的字节数组

问题描述

a = ['67', '56', '23', '29', '5e', 'eb', '6f', 'c9', 'dc', 'dd', '24', '1b', '00', 'b7', '6b', '69', 'e0', 'ce', 'c9', '2c', '61', '18', '22', '10', 'cb', 'a6', 'd5', '82', 'b2', '5d', 'ef', '32']

a的长度是32

有什么方法可以将上面的字符串转换为具有相同长度的字节格式。我需要像下面一样的答案

a = [b'67', '56', '23', '29', '5e', 'eb', '6f', 'c9', 'dc', 'dd', '24', '1b', '00', 'b7', '6b', '69', 'e0', 'ce', 'c9', '2c', '61', '18', '22', '10', 'cb', 'a6', 'd5', '82', 'b2', '5d', 'ef', '32']

标签: python-3.x

解决方案


a = [s.encode() for s in a]或者a = list(map(str.encode, a))都将进行您描述的转换。

也就是说,您的字符串每个都是两个十六进制数字,因此将它们编码为每个字节会更有意义,而不是编码实际的十六进制数字。为此,您可以编写a = [bytes.fromhex(s) for s in a]a = list(map(bytes.fromhex, a))

如果您希望列表中的字节作为单个bytes对象而不是单个字节的列表,您可以编写a = bytes.fromhex(''.join(a)).


推荐阅读