【问题标题】:Python convert array of strings to array of bytesPython将字符串数组转换为字节数组
【发布时间】:2021-07-09 21:04:37
【问题描述】:

我正在尝试将作为二进制值的字符串数组oldlist = ['00000100', '10100001', '11000001', '11100001'] 转换为其值的字节作为十六进制代码,因此结果列表将如下所示newlist = [b'\x04', b'\xa1', b'\xc1', b'\xe1']。我得到了遍历第一个列表并附加到前一个列表或进行某种列表组合的基本概念。但我找不到将“00000100”转换为“b'\x04'”的函数

【问题讨论】:

    标签: python python-3.x list arraylist


    【解决方案1】:

    您首先需要将二进制字符串转换为整数。为此,您可以使用基数为 2 的 int() 方法。然后要将其转换为字节,请使用 bytes() 方法,例如 bytes([x])。

    >>> oldlist = ['00000100', '10100001', '11000001', '11100001']
    >>> list(map(lambda x: bytes([int(x, 2)]), oldlist))
    [b'\x04', b'\xa1', b'\xc1', b'\xe1']
    

    【讨论】:

      【解决方案2】:

      你可以做的是使用string.getBytes();

      【讨论】:

      • 这不起作用。如果您尝试使用一个简单的字符串,例如"Hello World!",您将收到一条错误消息:AttributeError: 'str' object has no attribute 'getBytes'。看来您正在考虑 Java;这个问题是针对 Python 的。
      • 哎呀,这个错误真的很抱歉。是的,我认为它是在 Java 中的。所以在 Python 中同样的想法是 bytes()
      【解决方案3】:

      您可以使用int(number, 2)将字符串转换为整数:

      oldlist = ["00000100", "10100001", "11000001", "11100001"]
      
      out = list(map(lambda x: bytes([int(x, 2)]), oldlist))
      print(out)
      

      打印:

      [b'\x04', b'\xa1', b'\xc1', b'\xe1']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 2021-11-11
        • 1970-01-01
        • 1970-01-01
        • 2018-10-31
        相关资源
        最近更新 更多