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
经验分享 程序员 微信小程序 职场和发展