二进制数据在python中以字节(bytes)类型和字节数组类型(bytearray)保存着,前者数据固定,后者不固定,可继续添加。其每个元素为一个字节的数值,一字节由8位二进制数字组成,换算为10进制,位于0-255之间。
ASCII码:一个英文字母占一个字节的空间,一个中文汉字占两个字节的空间。
UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)占三个字节
Unicode编码:一个英文字符等于一个字节,一个中文(含繁体)占三个字节
二进制数据
with open('somefile.bin', 'wb') as f:
f.write(b'Hello World')
当写入二进制数据时,数据必须是以对象的形式提供,而且该对象可以将数据以字节形式暴露出来(字节串、bytearray对象)
with open('somefile.bin', 'rb') as f:
data = f.read()
print(data)
当读取二进制数据时,所有的数据将以字节串的形式返回
字节串和文本字符串之间的微妙语义差异。特别要注意的是在做索引和迭代操作时,字节串会返回代表该字节的整数值而不是字符串
t = 'Hello World'
b = b'Hello World'
print(t[0], b[0]) # H 72
如果需要在二进制文件中读取或写入文本内容,要做好相应的编码或解码