首页 技术 正文
技术 2022年11月15日
0 收藏 934 点赞 4,342 浏览 1776 个字

1,在python2.x 中是不区分bytes和str类型的,在python3中bytes和str中是区分开的,str的所有操作bytes都支持

python2 中

>>> s = “abcdefg”
>>> b = s.encode()    #或者使用下面的方式

>>> b = b”abcdefg”
>>> type(b)
<type ‘str’>

python3中     #str和bytes是严格区分的

>>> s = “abcdefg”
>>> type(s)
<class ‘str’>
>>> b = b”abcdefg”
>>> type(b)
<class ‘bytes’>

str是文本系列,bytes是字节系列

文本是有编码的(UTF-8,GBK,GB2312等)

字节没有编码

文本的编码指的是字符如何使用字节来表示组织方式,linux下默认都使用UTF-8

2,bytes与str之间的转换——-编码

bytes由str通过encode方法转化得到的,str也可以通过bytes 通过decode方法转化得到

通过b前缀可以定义bytes

GBK 是双字节,UTF-8 灵活编码,1字节,2字节,3字节,4字节都有,最大支持6字节长度,中文大多数是3字节

>>> S = “我是中国人”
>>> S
‘我是中国人’
>>> b = S.encode()     #进行编码为bytes
>>> b
b’\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba’
>>> b.decode()    #进行解码为字符串
‘我是中国人’
>>>

str被编码成什么格式的,就需要使用什么格式的编码进行解码

>>> S = “我是中国人”
>>> S
‘我是中国人’
>>> b = S.encode(‘GBK’)
>>> b
b’\xce\xd2\xca\xc7\xd6\xd0\xb9\xfa\xc8\xcb’
>>> b.decode(‘GBK’)
‘我是中国人’

可以使用bin( )将一个10进制整数或者16进制数转化为2进制

>>> bin(10)
‘0b1010’
>>>

>>> bin(0xce)
‘0b11001110’

3,bytes的操作

bytes具有string类型的所有操作,bytes可以通过str encode转化,也可以通过前缀b定义

>>> b = b’abc’
>>> b
b’abc’
>>> b.decode()
‘abc’

>>> b’abc’.find(b’c’)
2

>>> len((‘我是中国人’).encode())      #求bytes的长度
15
>>> b
b’abc’
>>> b.hex()   #转化为16进制
‘616263’

>>> bin(616263)      #转化为2进制
‘0b10010110011101000111’

除了encode外,str操作都有对应的bytes版本,但是传入的参数必须是bytes

bytearray类型

bytearray是可变的,bytes和str是不可变的,主要用于图片处理

相对bytes来说,多了insert,append,extend,pop,remove,clear,reverse等操作,并且支持索引操作

>>> S1 = “人生苦短,我学python!”
>>> S1
‘人生苦短,我学python!’
>>> b1 = bytearray(S1.encode())
>>> b1.decode()
‘人生苦短,我学python!’

>>> b1
bytearray(b’\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe5\xad\xa6python\xef\xbc\x81′)
>>> b1[:6] = bytearray(‘生命’.encode())
>>> S1
‘人生苦短,我学python!’
>>> b1
bytearray(b’\xe7\x94\x9f\xe5\x91\xbd\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe5\xad\xa6python\xef\xbc\x81′)
>>> b1.decode()
‘生命苦短,我学python!’
>>>

原文:https://blog.csdn.net/u010694764/article/details/53811035

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,991
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,506
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,349
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,134
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,766
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,844