解释python代码
#!/usr/bin/envpython#coding=utf-8data=open('data.txt')out=open('out','a')whileTrue:d=...
#!/usr/bin/env python
#coding=utf-8
data = open('data.txt')
out = open('out','a')
while True:
d = data.read(8)
if len(d) != 8:
break
out.write(chr(eval("0b%s"%d)))
data.close()
out.close()
这个程序是知道一个7z压缩包的0,1代码(在data.txt里),然后还原。谁能接摄一下 out.write(chr(eval("0b%s"%d)))这句代码,越详细越好,谢谢!!! 展开
#coding=utf-8
data = open('data.txt')
out = open('out','a')
while True:
d = data.read(8)
if len(d) != 8:
break
out.write(chr(eval("0b%s"%d)))
data.close()
out.close()
这个程序是知道一个7z压缩包的0,1代码(在data.txt里),然后还原。谁能接摄一下 out.write(chr(eval("0b%s"%d)))这句代码,越详细越好,谢谢!!! 展开
2个回答
展开全部
这段代码的意思是打开输入文件,每次读取8个字符,(没有判断他是否只包含0或1可以考虑加一行re.compile([01]{8})来判断), 在前面加上0b表示他是二进制表示的数字,eval转换字符串为数值也就是ASCII码 chr 再把它转换成相应的字符然后写到输出文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
# Assume some d is 01100001
>>> "0b%s" % "01100001"
'0b01100001'
>>> eval(_)
97
>>> chr(_)
'a'
至于out.write就是将'a'写入到类文件对象out里。
更多追问追答
追问
谢谢!有点思路了,你这个是转成了二进制,怎么可以转成十六进制?
追答
并不是转换成了二进制,而是从文件中读入的是二进制,通过这段代码转为对应的字符。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询