我正在尝试读取文件的内容并将其转换为实际存储在内存中的内容(如果我写入)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 = ""它工作得很好,直到它到达一个空格,然后它变成了奇怪的符号和混合的字母。
1 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
为了获得存储在内存中的字符串的(某种程度上)准确的表示,您需要将每个字符转换为二进制。
假设基本 ascii(每个字符 1 个字节)编码:
s = "python"
binlst = [bin(ord(c))[2:].rjust(8,'0') for c in s] # remove '0b' from string, fill 8 bits
binstr = ''.join(binlst)
print(s)
print(binlst)
print(binstr)
输出
python
['01110000', '01111001', '01110100', '01101000', '01101111', '01101110']
011100000111100101110100011010000110111101101110
对于 unicode (utf-8),每个字符的长度可以是 1-4 个字节,因此很难确定准确的二进制表示形式。
添加回答
举报
0/150
提交
取消