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

如何用python把任意文件转换为“1010”样子的文本

如何用python把任意文件转换为“1010”样子的文本

海绵宝宝撒 2019-04-06 16:57:35
最近迷上了玩pythonchallenge,就想写个能实现如题功能的玩意,无奈脑袋不够用。。。另,希望能够以一个图片为例,再将字符串转回原来原来的图片。多谢!(另,最好是python,不过java\c\c++都可以)
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

感谢@xavierskip的评论!终于摸出来了。。收获良多。用二进制形式打开文件后,read()出来的字符串叫做binarystring,二进制字符串,指的是这串字符串二进制层面上和文件完全相同,把它写入到另一个二进制文件中就等于拷贝了一份。而不是指表现形式上的二进制(101010101)。然后就是把这个字符串里的每个字符用ord()转换数字,再转成二进制表现形式的字符串就可以了。要注意的是python的bin()函数不会自己补足8位。好奇一下。。。binarystring(二进制字符串)是指和它代表的文件在二进制层面上内容相同的字符串,那1010这种字符串又怎么称呼呢?
stackoverflow上很多问题似乎都是用1sand0s来表示。。。有没有再文艺清新点的表达方式?。。巩固学习,写了相互转换的函数:#path参数:要转换的文件的路径
defconvertFileToOneAndZero(path):
f=open(path,'rb')
src=f.read()
printlen(src)
result=[]
foriinsrc:
temp=bin(ord(i))[2:]
temp='0'*(8-len(temp))+temp
result.append(temp)
return''.join(result)
#src参数:1010字符串
#path参数:输出文件的路径
defconvertOneAndZeroToFile(src,path):
result=[]
foriinrange(0,len(src),8):
result.append(chr(int(src[i:i+8],2)))
f=open(path,'wb')
f.write(''.join(result))
f.close()
                            
查看完整回答
反对 回复 2019-04-06
  • 2 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

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