【问题标题】:How to convert a binary representation of a string back to the original string in Python?如何将字符串的二进制表示转换回Python中的原始字符串?
【发布时间】:2015-04-03 06:13:23
【问题描述】:

我无法找到以下问题的答案: 从字符串开始,将其转换为二进制表示。如何在 Python 中取回原始字符串?

例子:

a = 'hi us'
b = ''.join(format(ord(c), '08b') for c in a)

然后b = 0110100001101001001000000111010101110011

现在我想在 Python 2.x 中恢复“hi us”。例如,这个网站完成了任务: http://string-functions.com/binary-string.aspx

我已经看到了几个 Java 的答案,但没有运气实现 Python。我也试过b.decode(),但不知道在这种情况下我应该使用哪种编码。

【问题讨论】:

  • 谢谢,但他们使用 'ascii' 解码,这与我的问题无关

标签: python decode binary-data


【解决方案1】:
>>> print ''.join(chr(int(b[i:i+8], 2)) for i in range(0, len(b), 8))
'hi us'

将 b 分成 8 个块,使用基数 2 解析为 int,转换为 char,将结果列表作为字符串连接。

【讨论】:

    【解决方案2】:

    使用此代码:

    import binascii
    n = int('0110100001101001001000000111010101110011', 2)
    binascii.unhexlify('%x' % n)
    

    【讨论】:

    • 更长的字符串怎么样?
    • @user 12321,完美!正是我需要的。谢谢。会尽快接受你的回答
    • 令我惊讶的是,确实如此! python 显然对超大整数的概念没有太大问题
    • 关于“效率”的任何进一步的 cmets 都会很好。我的一般问题是:例如,给定一个 len(s) 唯一地 转换为数字类型,然后再转换回获取 s.
    • 导入 binascii 对您有帮助,而且速度非常快,使用以下代码从文本中生成二进制数:import binascii bin(int(binascii.hexlify('hello'), 16)) 并使用我发布给您的问题的答案将其恢复为字符串。
    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 2015-01-20
    • 2016-05-21
    • 2017-09-28
    相关资源
    最近更新 更多