python 如何将字节转换为二进制

我正在尝试读取文件的内容并将其转换为实际存储在内存中的内容(如果我写入)


file = open("filename","br")

binary = "0b"

for i in file.read():

    binary += bin(i)[2:]

会binary等于内存中存储的实际值吗?如果是这样,我怎样才能将其转换回字符串?


编辑:我尝试过


file = open("filename.txt","br")

binary = ""

for i in file.read():

    binary += bin(i)[2:]

stored = ""

for bit in binary:

    stored += bit

    if len(stored) == 7:

        print(chr(eval("0b"+stored)), end="")

        stored = ""

它工作得很好,直到它到达一个空格,然后它变成了奇怪的符号和混合的字母。


凤凰求蛊
浏览 124回答 1
1回答

婷婷同学_

为了获得存储在内存中的字符串的(某种程度上)准确的表示,您需要将每个字符转换为二进制。假设基本 ascii(每个字符 1 个字节)编码:s = "python"binlst = [bin(ord(c))[2:].rjust(8,'0') for c in s]  # remove '0b' from string, fill 8 bitsbinstr = ''.join(binlst)print(s)print(binlst)print(binstr)输出python['01110000', '01111001', '01110100', '01101000', '01101111', '01101110']011100000111100101110100011010000110111101101110对于 unicode (utf-8),每个字符的长度可以是 1-4 个字节,因此很难确定准确的二进制表示形式。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python