Python bytearray/bytes/string区别

最后更新于:2020-03-21 12:03:16

一.字节与字符的区别

在讲解 bytearray / bytes / string 三者的区别之前,有必要来了解一下字节和字符的区别:

1.字节概念

字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位。最常用的字节是八位的字节,即它包含八位的二进制数;

位(bit)是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数;

字节(byte)是计算机中 数据处理 的基本单位,习惯上用大写  B  来表示,1B(byte,字节)= 8bit(位);

 

 

2.字符概念

字符 是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等;

一般 utf-8 编码下,一个汉字 字符 占用 3 个 字节;

一般 gbk 编码下,一个汉字 字符 占用 2 个 字节;

 

3.字符串概念

字符串是字符序列,它是一种抽象的概念,不能直接存储在硬盘 – 字节串是给计算机看的,给计算机传输或者保存的,在Python中,程序中的文本都用字符串表示

 

4.字节串概念

字节串是字节序列,它可以直接存储在硬盘, 字节串是给计算机看的。它们之间的映射被称为编码/解码 – 字符串是给人看的,用来操作的;

输出结果:

 

 

 

二.str、bytes和bytearray区别

1.str是字符数据(如:文本,给人看的),bytes和bytearray是字节数据(如:二进制数据,给计算机看的),它们都是序列,可以进行迭代遍历。

2.str和bytes是不可变序列,通过str类型的通用函数,比如find()、replace()、islower()等函数修改后实际上是重新创建了新对象;bytearray是可变序列,可以原处修改字节。

3.bytes和bytearray都能使用str类型的通用函数,比如find()、replace()、islower()等,不能用的是str的格式化操作。

4.python 3.x中默认str是unicode格式编码的,例如UTF-8字符集。

 

三.string与bytes/bytearray相互转换

1.string经过编码encode转化成bytes

输出结果:

 

 

2.bytes经过解码decode转化成string

输出结果:

注意:如果bytes初始化含有中文的字符串必须设置编码格式,否则报错:TypeError: string argument without an encoding

 

猜你喜欢:

1.python bytes

2.python 可变数据类型和不可变数据类型

3.python bytes和string相互转换

 

转载请注明猿说Python » python bytearray/bytes/string区别

 

技术交流、商务合作请直接联系博主
扫码或搜索:猿说python
python教程公众号
猿说python
微信公众号 扫一扫关注