【问题标题】:How to make a Python string out of non-ascii "bytes"如何用非ASCII“字节”制作Python字符串
【发布时间】:2010-10-04 12:13:44
【问题描述】:

我需要创建一个由非 ascii 字节组成的 Python 字符串,用作 C 模块中的命令缓冲区。 如果我手动编写字符串,我可以做到这一点:

mybuffer = "\x00\x00\x10"

但如果我有一组整数将成为字符串中的字节,我无法弄清楚如何即时创建字符串。将整数与字符串连接是 TypeError。

如果我有一个整数列表,可以说:

myintegers = [1, 2, 3, 10]

如何将其转换为字符串"\x01\x02\x03\x0A"

我使用的是 Python 2.6。

【问题讨论】:

    标签: python string byte


    【解决方案1】:

    u''.join(map(unichr, myintegers)) 会做你想做的事。

    【讨论】:

    • 如果你不会超过 256,请去掉前面的 u 并使用 chr 而不是 unichr
    • 更好的是,使用b'',以便2to3 将其识别为bytes 而不是str
    【解决方案2】:

    Python 2.X

    ''.join(chr(i) for i in myintegers)
    

    Python 3.X

    bytes(myintegers)
    

    【讨论】:

      【解决方案3】:
      In [28]: import struct
      
      In [29]: struct.pack('{0}B'.format(len(myintegers)),*myintegers)
      Out[29]: '\x01\x02\x03\n'
      

      注意

      In [47]: '\x01\x02\x03\n'=="\x01\x02\x03\x0A"
      Out[47]: True
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-15
        • 1970-01-01
        • 2015-02-27
        • 2022-01-07
        • 1970-01-01
        • 2017-04-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多