您的位置: 网站首页> python进阶> 当前文章
3种方法创建字节串bytes及其使用
老董-我爱我家房产SEO2021-11-19150围观,129赞
需要了解字符集、字符编码、Unicode、码点值、UTF-8编码、GBK编码这种杂七杂八概念的可以参考:字符集与编码的区别。
在python3的世界里,字符串str数据类型在内存中会统一转为unicode类型存储。python3还有一种字节串bytes类型,字节串可以由字符串按照某种编码方式编码得到。
print(bin(ord('我'))) # Unicode码点值 byte_s = '我'.encode('utf-8') # 按utf-8编码得到的字节值 print(byte_s) print(type(byte_s))
0b110001000010001 b'我' <class 'bytes'>
bytes对象的操作是以字节byte为单位,每一个byte的值只能是0到255。普通字符串是以人眼可读的字符为单位操作。bytes类型和str类型支持的方基本相同,我们看下字节串的遍历和len操作:
byte_s = 'python'.encode('utf-8') print(byte_s) print(len(byte_s)) for i in byte_s: print(hex(i)) print('------------------') byte_s = '老董笔记'.encode('utf-8') print(byte_s) print(len(byte_s)) for i in byte_s: print(hex(i))
b'python' 6 0x70 0x79 0x74 0x68 0x6f 0x6e ------------------ b'老董笔记' 12 0xe8 0x80 0x81 0xe8 0x91 0xa3 0xe7 0xac 0x94 0xe8 0xae 0xb0
除了通过encode函数创建之外,还有其他的方式创建bytes字节数据。
1、对于ASCII字符,可以通过 b'' 这种字面量方式创建 bytes数据。
2、不管是ASCII字符还是非ASCII字符都可以通过内置函数bytes()来创建。
print(b'hello') print(bytes('二手房',encoding='UTF-8'))
b'hello' b'二手房'
如果要把bytes字节数据转为字符串可以使用decode方法。bytes对象也是不可变类型,不可以被原地修改。
bs = bytes('房',encoding='UTF-8') print(bs) print(bs.decode('utf-8'))
b'房' 房
bs = b'rent' bs[0] = 12
TypeError: 'bytes' object does not support item assignment
在日常使用中,有1次在对1个接口post数据时候,post的数据含中文导致一直报错,后来转为bytes字节去post则没问题了!
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
3种方法创建字节串bytes及其使用文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200