为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

凤凰求蛊 2023-08-03 17:33:00
我正在尝试读取文件的内容并将其转换为实际存储在内存中的内容(如果我写入)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 个字节,因此很难确定准确的二进制表示形式。


查看完整回答
反对 回复 2023-08-03
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信