python把任意文件转换成1010样子的字符串,加转回来。。。突然觉得加密解密很好玩的说。。
2013-03-24 04:40
435 查看
起源于在这里问的一个问题:http://segmentfault.com/q/1010000000182052
最近迷上了玩python challenge,就想到要整个这个玩意,结果想来简单作起来难。。。不过好处是梳理清楚了很多模模糊糊的地方。
废话不说,先上代码:
用二进制形式打开文件后,read()出来的字符串叫做binary string,二进制字符串,指的是这串字符串二进制层面上和文件完全相同,把它写入到另一个二进制文件中就等于拷贝了一份。而不是指表现形式上的二进制(101010101)。
然后就是把这个字符串里的每个字符用ord()转换数字,再转成二进制表现形式的字符串就可以了。要注意的是python的bin()函数不会自己补足8位。
为什么不补足八位要小心呢?因为一个字符占8bit,前面几位就算是0也不能无视,不补齐的话生成的字符串就不对了。转换回来的时候文件就会出错。转换完的1010的长度应该是binary string长度的八倍。
好奇一下。。。binary string(二进制字符串)是指和它代表的文件在二进制层面上内容相同的字符串,那1010这种字符串又怎么称呼呢?
stackoverflow上很多问题似乎都是用1s and 0s来表示。。。有没有再文艺清新点的表达方式?。。
最近迷上了玩python challenge,就想到要整个这个玩意,结果想来简单作起来难。。。不过好处是梳理清楚了很多模模糊糊的地方。
废话不说,先上代码:
# path参数:要转换的文件的路径 def convertFileToOneAndZero(path): f = open(path,'rb') src = f.read() print len(src) result = [] for i in src: temp = bin(ord(i))[2:] # bin()函数输出的结果前面带0b两个字符,这里不需要所以去掉它 temp = '0' * (8-len(temp)) + temp result.append(temp) return ''.join(result) # src参数:1010字符串 # path参数:输出文件的路径 def convertOneAndZeroToFile(src, path): result = [] for i in range(0, len(src), 8): result.append(chr(int(src[i:i+8], 2))) f = open(path, 'wb') f.write(''.join(result)) f.close()
用二进制形式打开文件后,read()出来的字符串叫做binary string,二进制字符串,指的是这串字符串二进制层面上和文件完全相同,把它写入到另一个二进制文件中就等于拷贝了一份。而不是指表现形式上的二进制(101010101)。
然后就是把这个字符串里的每个字符用ord()转换数字,再转成二进制表现形式的字符串就可以了。要注意的是python的bin()函数不会自己补足8位。
为什么不补足八位要小心呢?因为一个字符占8bit,前面几位就算是0也不能无视,不补齐的话生成的字符串就不对了。转换回来的时候文件就会出错。转换完的1010的长度应该是binary string长度的八倍。
好奇一下。。。binary string(二进制字符串)是指和它代表的文件在二进制层面上内容相同的字符串,那1010这种字符串又怎么称呼呢?
stackoverflow上很多问题似乎都是用1s and 0s来表示。。。有没有再文艺清新点的表达方式?。。
相关文章推荐
- 使用python3的base64编解码实现字符串的简易加密解密
- C++实现文件简单加密与解密(读取文件中的字符,对字符转换,然后写入,完成加密,解密反之)
- 使用Des,MD5 加密.解密.字符串.文件
- Base64 解密,加密文件或者字符串 [本人加了字符串加解密]
- 加密解密基础问题:字节数组和(16进制)字符串的相互转换
- aes加密解密文件,以及计算文件的效验值,附带字符串加密解密
- Python实现对字符串的加密解密方法示例
- 加密解密基础问题:字节数组和(16进制)字符串的相互转换(转)
- C#中使用进制转换思想对字符串进行任意进制任意字典的加密和解密
- Python字符串加密解密方法总结
- 使用python3的base64编解码实现字符串的简易加密解密
- java_AES加密解密文件以及字符串
- Python基本语法实例:文件处理,字符串转换
- [C++]DES加密解密工具2.1及其代码——支持字符串及文件加密,支持3重DES
- [Python] 字符串加密解密
- DES加密解密工具2.1及其代码——支持字符串及文件加密,支持3重DES
- 使用python3的base64编解码实现字符串的简易加密解密
- python基于base64加密解密文件
- DES加密解密工具2.1及其代码——支持字符串及文件加密,支持3重DES
- [原创]DES加密解密工具2.1及其代码——支持字符串及文件加密,支持3重DES