Python有两种类型可以表示字符序列:一种是bytes,另一种是str。bytes实例包含的是原始数据,即8位的无符号值(通常按照ASCII编码标准来显示)。str实例包含的是Unicode码点(code point,也叫作代码点)。
注意点:
1,bytes和str并不兼容。在传递字符序列的时候需要注意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | a = b "h\x65llo" b = "world" # 可行的 print ( "%s" % a) # b'hello', 可行原因:执行print时,会调用bytes的__repr__方法; # 而type(repr(bytes))是str类型,所以可替换%s # 不可行 print (b "%s" % b) # TypeError: %b requires a bytes-like object, # or an object that implements __bytes__, not 'str' # 不可行原因:不知道str应该按照什么方案来编码 print (a + b) # TypeError: can't concat str to bytes |
2,操作文件时,需要注意编码格式。
1 2 3 4 | with open ( 'file/student.bin' , 'r' ) as f: print (f.read()) # UnicodeDecodeError: # 'utf-8' codec can't decode byte 0x87 in position 10: invalid start byte<br>原因:r默认是以文本方式读取,默认编码为utf-8,当文件不为utf-8格式时,就会异常 |
两种解决方式:
1,使用rb进行读取;
2,指定encoding编码格式;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具