【问题标题】:Convert list of string into byte array with the same length using python使用python将字符串列表转换为具有相同长度的字节数组
【发布时间】:2021-03-29 02:51:14
【问题描述】:
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)) 应该都可以工作。但是为什么你想要b'67' 而不是b'\x67' 作为你的结果呢?
  • 谢谢@kaya3,它的工作,可能是我的要求是错误的,非常感谢你的帮助
  • @kaya3,也许你应该发布你的 cmets 作为答案,以便它被接受。否则,它将保持打开状态:)
  • 这能回答你的问题吗? Best way to convert string to bytes in Python 3?
  • @JoeFerndz 我主要是要求 OP 确认这实际上是他们想要的;我现在已将其转换为答案。

标签: python-3.x


【解决方案1】:

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))

【讨论】:

    猜你喜欢
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多