python-3.x - 使用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']
解决方案
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))
.
推荐阅读
- laravel - Laravel 7 路由
- java - NHibernate 和 Hibernate 有什么区别?
- node.js - Docker - ValidationError:无效的选项对象
- django - 渲染大文件时nginx 403禁止
- java - 使用 application.yml 文件中的正则表达式并在 pojo 类中使用(模式评估)
- python - obj 类型是
不是 json 可序列化 obj - azure-devops - 从 yaml 管道创建自动化凭证
- git - 从特定标签和最后一次提交之间的提交中进行格式补丁
- python - 如何将输入转换为正则表达式
- python - Pandas,如何计算自定义块的周数?