Python字节串类型bytes如何用,有什么使用技巧
Admin 2022-08-20 群英技术资讯 514 次浏览
Python 3 新增了 bytes 类型,用于代表字节串,是一个类型,不是C#中的列表。
由于 bytes 保存的就是原始的字节(二进制格式)数据,因此 bytes 对象可用于在网络上传输数据,也可用于存储各种二进制格式的文件,比如图片、音乐等文件。
bytes 和 str 除操作的数据单元不同之外,它们支持的所有方法都基本相同,bytes 也是不可变序列。
计算机底层有两个基本概念:位(bit)和字节(Byte),其中
在字节串中每个数据单元都是字节,也就是 8 位,其中每 4 位(相当于 4 位二进制数,最小值为 0 ,最大值为 15)可以用一个十六进制数来表示,因此每字节需要两个十六进制数表示,
b'\xe6\x88\x91\xe7\x88\xb1Python\xe7\xbc\x96\xe7\xa8\x8b', # 比如 :\xe6 就表示 1 字节,其中 \x 表示十六进制,e6 就是两位的十六进制数。
Unicode 字符集,包括汉字,为两个字节(16 位,支持 65536 个字符编号)。实际使用的 UTF-8, UTF-16 等其实都属于 Unicode 字符集。
bytes 对象只负责以字节(二进制格式)序列来记录数据,至于这些数据到底表示什么内容,完全由程序决定。如果采用合适的字符集,字符串可以转换成字节串;反过来,字节串也可以恢复成对应的字符串。
如果希望将一个字符串转换成 bytes 对象,有如下三种方式:
下面程序中 b1~b5 都是字节串对象,该程序示范了以不同方式来构建字节串对象。其中 b2、b3 都是直接在 ASCII 字符串前添加b前缀来得到字节串的:b4 调用 bytes() 函数来构建字节串;而 b5 则调用字符串的 encode 方法来构建字节串。
# 创建一个空的bytes b1 = bytes() # 创建一个空的bytes值 b2 = b'' # 1、通过b前缀指定hello是bytes类型的值 b3 = b'hello' print(b3) print(b3[0]) print(b3[2:4]) #b'hello' #104 #b'll'
# 调用bytes方法将字符串转成bytes对象 b4 = bytes('我爱Python编程',encoding='utf-8') print(b4) #b'\xe6\x88\x91\xe7\x88\xb1Python\xe7\xbc\x96\xe7\xa8\x8b'
# 利用字符串的encode()方法编码成bytes,默认使用utf-8字符集 b5 = "学习Python很有趣".encode('utf-8') print(b5) #b'\xe5\xad\xa6\xe4\xb9\xa0Python\xe5\xbe\x88\xe6\x9c\x89\xe8\xb6\xa3'
从上面的输出结果可以看出,字节串和字符串非常相似,只是字节串里的每个数据单元都是 1 字节。
如果程序获得了 bytes 对象,也可调用 bytes 对象的 decode() 方法将其解码成字符串,
#将bytes 对象解码成字符串,默认使用UTF-8进行解码 st = b5.decode('utf-8') print(st)#学习Python很有趣
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Python 实现一个全连接的神经网络,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
这篇文章主要介绍了使用pytorch读取数据集,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
其实原理很简单,一句话概括就是「大力出奇迹」,Python 有两个压缩文件库:zipfile 和 rarfile,这两个库提供的解压缩方法 extractall()可以指定密码,这样的话首先生成一个密码字典(手动或用程序),然后依次尝试其中的密码,如果能够正常解压缩表示密码正确。
写了个python opencv的小demo,可以通过键盘按下字母s进行采集图像。
这篇文章主要为大家介绍了Python之可迭代对象,迭代器和生成器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008