如何在Python中以与py2和py3一起使用的方式定义二进制字符串?

sor*_*rin 7 python python-2.5 python-3.x

我正在编写一个应该在Python 2和3中工作的模块,我需要定义一个二进制字符串.

通常这会是类似的data = b'abc'但是这个代码代码在Python 2.5上失败,语法无效.

如何以适用于所有Python 2.5+版本的方式编写上述代码

注意:这必须是binary(它可以包含任何类型的字符,0xFF),这非常重要.

Len*_*bro 6

我会推荐以下内容:

from six import b
Run Code Online (Sandbox Code Playgroud)

当然,这需要六个模块.如果您不想这样,这是另一个版本:

import sys
if sys.version < '3':
    def b(x):
        return x
else:
    import codecs
    def b(x):
        return codecs.latin_1_encode(x)[0]
Run Code Online (Sandbox Code Playgroud)

更多信息.

这些解决方案(基本上是相同的)工作,干净,速度与您将获得的速度一样快,并且可以支持所有256字节值(这里没有其他解决方案可以).