python 如何将字节转换为二进制
python how to convert bytes to binary
我正在尝试读取文件内容并将其转换为实际存储在内存中的内容
如果我写
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 = ""
它工作正常,直到达到 space,然后它变成了奇怪的符号和混淆的字母。
要在字符串存储在内存中时获得(稍微)准确的表示,您需要将每个字符转换为二进制。
假设基本 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 个字节,因此很难确定确切的二进制表示形式。正如@Yellen 提到的,将文件字节转换为二进制文件可能更容易。
我正在尝试读取文件内容并将其转换为实际存储在内存中的内容 如果我写
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 = ""
它工作正常,直到达到 space,然后它变成了奇怪的符号和混淆的字母。
要在字符串存储在内存中时获得(稍微)准确的表示,您需要将每个字符转换为二进制。
假设基本 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 个字节,因此很难确定确切的二进制表示形式。正如@Yellen 提到的,将文件字节转换为二进制文件可能更容易。