微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python中二进制到字符串/文本

如何解决Python中二进制到字符串/文本

似乎您正在尝试从每个字符的二进制字符串表示形式(位字符串)解码ASCII字符。

您可以将每个块包含八个字符(一个字节),将其转换为整数,然后使用以下命令将其转换为字符chr()

>>> X = "0110100001101001"
>>> print(chr(int(X[:8], 2)))
h
>>> print(chr(int(X[8:], 2)))
i

假设字符串中编码的值是ASCII,这将为您提供字符。您可以将其概括如下:

def decode_binary_string(s):
    return ''.join(chr(int(s[i*8:i*8+8],2)) for i in range(len(s)//8))

>>> decode_binary_string(X)
hi

如果您想将其保留为原始编码,则无需进一步解码。通常,您会将输入的字符串转换为Python unicode 字符串,可以这样做(Python 2):

def decode_binary_string(s, encoding='UTF-8'):
    byte_string = ''.join(chr(int(s[i*8:i*8+8],2)) for i in range(len(s)//8))
    return byte_string.decode(encoding)

解决方法

我已经在网上搜索了很多次,但找不到一种方法来转换我的二进制字符串变量 X

X = "1000100100010110001101000001101010110011001010100"

转换为UTF-8字符串值。

我发现有些人正在使用诸如

b'message'.decode('utf-8')

但是,此方法对我不起作用,因为据说不存在“ b”,并且我不确定如何用变量替换“消息”。不仅如此,我还无法理解这种方法的工作原理。有更好的选择吗?

那么如何将二进制字符串转换为文本字符串呢?

编辑:我也不介意ASCII解码

澄清:这就是我想发生的事情。

def binaryToText(z):
    # Some code to convert binary to text
    return (something here);
X="0110100001101001"
print binaryToText(X)

然后将产生字符串…

hi

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。