Python2至Python3的bin文件操作变化
Python3有个很大的变化就是严格区分bytes类型与string类型,导致之前python2.7操作文件的小脚本都不能用了,就二进制bin文件常用操作如下:
以下说明均是以‘wb’或者‘rb’格式打开bin文件:
1、[bytes转数字] bin文件读取的内容为bytes类型,bytes转换为单个8位数字处理时,可以这样做:
for c in open_file.read(): # process c
或者
b = bx12x34 n = int.from_bytes(b,byteorder=big,signed=False) #bx12x34->4660 n = 4660 b = n.to_bytes(length=2,byteorder=big,signed=False) #4660->bx12x34
这样c便是数值型了
2、[bytes转string] bin文件内容为纯可打印字符时,想读取字符串时,可以这样处理:
data_string = (open_file.read()).decode("utf-8")
这样data_string便是字符串类型了
3、[数字转bytes] 如果想要向文件写入0x00,0x20,0x50这样的比特流数据时,可以这样做:
output_file.write(bytes([0x0,0x20,0x50]))
4 、 [数字转string字符]
chr(97) >>>a
5、[string 转 bytes] 如果想要向文件写"hello world! "这样的字符串流时,可以这样做:
s = "hello world! " output_file.write(s.encode(encoding=UTF-8))
6、[string字符转数字]
ord(a) >>>97