Python3有个很大的变化就是严格区分bytes类型与string类型,导致之前python2.7操作文件的小脚本都不能用了,就二进制bin文件常用操作如下:
以下说明均是以‘wb’或者‘rb’格式打开bin文件:
1、[bytes转数字] bin文件读取的内容为bytes类型,bytes转换为单个8位数字处理时,可以这样做:
for c in open_file.read():
# process c
或者
b = b'\x12\x34'
n = int.from_bytes(b,byteorder='big',signed=False)
#b'\x12\x34'->4660
n = 4660
b = n.to_bytes(length=2,byteorder='big',signed=False)
#4660->b'\x12\x34'
这样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!\r\n"这样的字符串流时,可以这样做:
s = "hello world!\r\n"
output_file.write(s.encode(encoding='UTF-8'))
6、[string字符转数字]
ord('a')
>>>97