当前位置: 首页 > 面试题库 >

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

齐英耀
2023-03-14
问题内容

我已经在网上搜索了很多次,但找不到一种方法来转换我的二进制字符串变量 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

问题答案:

似乎您正在尝试从每个字符的二进制字符串表示形式(位字符串)解码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)


 类似资料:
  • 问题内容: 我已经阅读了有关该主题的几篇文章,但是所提供的代码(有时是片段)都没有帮助我解决转换这样的二进制字符串的简单问题: 插入文本字符串早安 我可能无法将我在stackoverflow中可用的链接中找到的代码片段放在一起。有人会这么友好地给我完整的代码吗?假设我有一个输入字符串(文本)来自我正在通过“ gettext()”访问的JTextarea,例如text = tTextarea.get

  • 问题内容: 是否有任何固定的Python方法将Python中的Integer(或Long)转换为二进制字符串? Google上有无数的dec2bin()函数…但是我希望可以使用内置函数/库。 问题答案: Python的字符串格式方法可以采用格式规范。

  • 问题内容: 我需要一种方法来获取python中字符串的二进制表示形式。例如 是否有一些巧妙的方法来做到这一点? 问题答案: 像这样吗

  • 我如何将一个写为二进制的字符串转换为二进制(字节数组)? 如果我有一个字符串: 下面是当我将二进制设置为字节数组时发生的情况(字节数组返回48,这是ASCII) 我不擅长解释,所以希望上面的例子足以告诉你我想要什么。

  • 问题内容: 为什么这段代码会抛出: 问题答案: 大于 。 参见http://codingdict.com/questions/114817 考虑改为使用。 编辑: 好,这对我来说是新的。看来,和解析二进制的符号-幅度不作为二进制补码。

  • 问题内容: 这一定很明显,但我无法弄清楚。我为此花了将近一整天。我很乐意给减轻我体重的人买啤酒。 这是我的代码。我看到字节数组大小不合适,但是我找不到正确的大小。除此之外,内容也不是不正确的。似乎只有文字字符可以。 似乎从二进制文件中删除数据确实很痛苦,我真的很沮丧。 还有一件事:文件内容不是文本,可以是图片,视频或pdf之类的东西。 问题答案: 如果你正在读一个二进制文件,你应该 不 尝试把它当