Py学习  »  Python

Python:将二进制字符串转换为文本文件

Mike SQ • 6 年前 • 2490 次点击  

我写了一个代码,可以从文本文件转换文本 a.txt 变成二进制字符串 Binary ,现在我想做相反的事,

换句话说,我想转换二进制字符串 进入文本文件 b.txt 西 a、 文本

我该怎么做?

代码如下,plz根据代码提供解决方案:

content = open('a.txt', 'r').read()
test_str = content
# using join() + ord() + format()  ... Converting String to binary 
Binary = ''.join(format(ord(i), 'b') for i in test_str)   

# printing original string  
print("The original string is : " + str(test_str)) 
# printing result  
print("The string after Binary conversion : \n" + str(Binary))

编辑:

  1. 二元的 但是我得到了一个未知的字符,它不在文本文件中 a、 文本

  2. 如果我提供空间 ''.join(format(ord(i), 'b') for i in test_str) 然后我不能在字符串中得到一个句子,我得到错误,字符串得到空格,这是我不需要的,我需要一个完整的字符串,字符串中没有空格 二元的

    n=int(二进制,2)

    打印(n.to_字节((n.bit_length()+7)//8,“big”).decode())

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56221
文章 [ 1 ]  |  最新文章 6 年前
Mark Meyer
Reply   •   1 楼
Mark Meyer    6 年前

你需要一些识别字符边界的方法。如果将其限制为设置的位长度(如仅8位),则可以填充二进制文件,然后就可以知道字符大小。如果你不想这样做,你需要别的办法。

这里有一个方法,它不关心处理空格、emojis等的输入。它是通过用空格分隔二进制文件中的字符来实现的:

test_str = "Dies ist eine binäre Übersetzung. 🐻"

Binary = ' '.join(format(ord(i), 'b') for i in test_str)   

print("original:")
print(test_str)

print("\nThe string after Binary conversion : \n" + Binary)

text = "".join(chr(int(s, 2)) for s in  Binary.split())
print(f'\nString after conversion back to text:\n{text}')

这张照片:

原件:
死在一个垃圾桶里。

二进制转换后的字符串:
1000100 1101001 1100101 1110011 100000 1101001 1110011 1110100 100000 1100101 1101001 1101110 1100101 100000 1100010 1101001 1101110 11100100 1110010 1100101 100000 1110101 1101110 1100111 101110 100000 11111 01000011011

转换回文本后的字符串:
死在一个垃圾桶里。

注意emoji的最后一个字符以及二进制文件的长度。可能是bear emoji或几个ascii字符。没有分隔符,现在就有办法知道了。