python string类型 bytes类型 bytearray类型

一、python3对文本和二进制数据做了区分。文本是Unicode编码,str类型,用于显示。二进制类型是bytes类型,用于存储和传输。bytes是byte的序列,而str是unicode的序列。

str类型:

1 >>> s = u‘你好‘
2 >>> s
3 ‘你好‘
4 >>> type(s)
5 <class ‘str‘>

bytes类型:

1 >>> b = b‘abc‘
2 >>> b
3 b‘abc‘
4 >>> type(b)
5 <class ‘bytes‘>

二、str和bytes之间的转换关系:str-->encode()-->bytes-->decode()-->str

转换方式一:encode(),decode()

 1 >>> a = u‘你好‘
 2 >>> b = a.encode(‘utf-8‘)
 3 >>> b
 4 b‘\xe4\xbd\xa0\xe5\xa5\xbd‘
 5 >>> type(b)
 6 <class ‘bytes‘>
 7 >>> new_a = b.decode(‘utf-8‘)
 8 >>> new_a
 9 ‘你好‘
10 >>> type(new_a)
11 <class ‘str‘>

转换方式二:bytes(),str()

 1 >>> a = u‘你好‘
 2 >>> b= bytes(a, encoding=‘utf-8‘)
 3 >>> b
 4 b‘\xe4\xbd\xa0\xe5\xa5\xbd‘
 5 >>> type(b)
 6 <class ‘bytes‘>
 7 >>> new_a = str(b, encoding=‘utf-8‘)
 8 >>> new_a
 9 ‘你好‘
10 >>> type(new_a)
11 <class ‘str‘>

三、bytearray类型

bytearray类是range 0 < = x < 256的一个可变序列。

可选的源参数可以用几种不同的方式来初始化数组:

  • 如果它是一个字符串,那么您还必须给出编码(以及可选的错误)参数;bytearray()然后使用str.encode()将字符串转换为字节。
  • 如果它是一个整数,那么数组将具有这个大小,并将用null字节初始化。
  • 如果它是符合缓冲区接口的对象,则将使用对象的只读缓冲区来初始化字节数组。
  • 如果它是可迭代的,那么它必须是range 0 < = x < 256的整数的迭代,它被用作数组的初始内容
  • 如果没有参数,则创建一个大小为0的数组。

当源参数是一个字符串时:

1 >>> b = bytearray(u‘你好‘, encoding=‘utf-8‘)
2 >>> b
3 bytearray(b‘\xe4\xbd\xa0\xe5\xa5\xbd‘)
4 >>> type(b)
5 <class ‘bytearray‘>

当源参数是一个整数时:

1 >>> b = bytearray(5)
2 >>> b
3 bytearray(b‘\x00\x00\x00\x00\x00‘)
4 >>> type(b)
5 <class ‘bytearray‘>

当源参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256:

1 >>> b = bytearray([1, 2, 3, 4, 255])
2 >>> b
3 bytearray(b‘\x01\x02\x03\x04\xff‘)
4 >>> type(b)
5 <class ‘bytearray‘

四、bytes和bytearray区别

bytes是不可变的,同str。bytearray是可变的,同list。

 1 >>> b = bytearray()
 2 >>> b
 3 bytearray(b‘‘)
 4 >>> b.append(10)
 5 >>> b
 6 bytearray(b‘\n‘)
 7 >>> b.append(100)
 8 >>> b
 9 bytearray(b‘\nd‘)
10 >>> b.remove(100)
11 >>> b
12 bytearray(b‘\n‘)
13 >>> b.insert(0, 150)
14 >>> b
15 bytearray(b‘\x96\n‘)
16 >>> b.extend([1, 3, 5])
17 >>> b
18 bytearray(b‘\x96\n\x01\x03\x05‘)
19 >>> b.pop(2)
20 1
21 >>> b
22 bytearray(b‘\x96\n\x03\x05‘)
23 >>> b.reverse()
24 >>> b
25 bytearray(b‘\x05\x03\n\x96‘)
26 >>> b.clear()
27 >>> b
28 bytearray(b‘‘)

五、bytes和 bytearray转换

1 >>> b = b‘abcdef‘
2 >>> bay = bytearray(b)
3 >>> bay
4 bytearray(b‘abcdef‘)
5 >>> b = bytes(bay)
6 >>> b
7 b‘abcdef‘

六、bytearray和str转换

1 >>> a = ‘abcdef‘
2 >>> b = bytearray(a, encoding=‘utf-8‘)
3 >>> b
4 bytearray(b‘abcdef‘)
5 >>> a = b.decode(encoding=‘utf-8‘)
6 >>> a
7 ‘abcdef‘
时间: 2024-10-08 17:35:06

python string类型 bytes类型 bytearray类型的相关文章

python数据l类型 ——bytes 和 bytearray

bytes和 bytearray bytes:可以看作是一组数值(0-256)(二进制) 的 str 序列bytearray :可以看作是一组数值(0-256)(二进制) 的 list 序列 bytes类型 字符串转bytes类型 # 将返回 bytes 类型 b" abc " bs1 = bytes("abc","utf-8") # 可以使用字符的16进制字符表达形式 bs2 = bytes('\x61\x62\x63',"utf-8

Python 3中bytes和str的分别

最近把一段py2的代码转换到py3的代码,结果运行到向socket中写数据的代码部分出现了'str' does not support the buffer interface这样一个错误. 一番搜索之后,发现py3里是严格区分了str和bytes的.怎么理解str和bytes呢?你可以认为str是一段文本,比如“abcd#%$^*&”什么的,而bytes呢,是二进制的一堆0,1的比特而已.看下面的图: 可以看到str的类型是class 'str',而str.encode()以后类型是class

Python数据类型-7 bytes

bytes 在Python3以后,字符串和bytes类型彻底分开了.字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的. bytes数据类型在所有的操作和使用甚至内置方法上和字符串数据类型基本一样,也是不可变的序列对象. Python3中,bytes通常用于网络数据传输.二进制图片和文件的保存等等.可以通过调用bytes()生成bytes实例,其值形式为 b'xxxxx',对于同一个字符串如果采用不同的编码方式生成bytes对象,就会形成不同的值. b = b'' 创建一个空的b

python有哪些变量类型?以及变量类型的总结

python有哪些变量类型?以及变量类型的总结[数值]Number:float.int.long.complex [字符串]:str注意没有string,这里的str就是string的缩写. 创建方式:str() a='abcdef' 方法: 1.截取:a[头下标:尾下标:每步值] 每步值默认是:1 2.增加:a + a 等同 a*2 3.合并:a + a 4.S.lower() #小写 5.S.upper() #大写 6.S.swapcase() #大小写互换 7.S.capitalize()

python基础(1) 变量类型

变量赋值: python中的变量不需要类型声明 每个变量在使用前必须赋值,变量赋值以后才会被创建 变量在内存中创建时,包括变量的标识.名称和数据这些信息. EX: 1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 4 counter = 100 # 赋值整型变量 5 miles = 1000.0 # 浮点型 6 name = "John" # 字符串 7 8 print counter 9 print miles 10 print name

Object,scanner,String,StringBuffer,Java中基本类型的包装类型等

一.Scanner类 Scanner类:简单文本扫描器1.键盘录入步骤:(1)需要创建键盘录入对象:Scanner 键盘录入对象=new Scanner(System.in):(2)导包:import java.util.Scanenr(快捷键:ctrl+shift+o):(3)接收数据:XXX 变量名= 键盘录入对象.nextXXX():(例如:int 变量名=键盘录入对象.nextInt():).2.构造方法public Scanner(InputStream source):以输入流形式录

三元表达式、bytes、bytearrar类型以及切片等

三元表达式(if 和 else 必须同时出现) if i == j:endchar = '\n'else:endchar = ' ' v char ='\n' if i ==j else '' #三元表达式(真写前面,假写后面)   时间测试:start = datetime.datetime.now()delta = (datetime.datetime.now()-start).total_seconds()    Python3.6引入新类型:  bytes.bytearray(可变类型)

【Python系统学习03】错误类型整理(一)

错误类型与可能原因分析 A.语法错误: 1.syntaxError:invalid syntax 无效的语法 print(2019小石头) # print(2019小石头) # ^ # SyntaxError: invalid syntax 2.syntaxError:invalid character in identifier 标识符中有无效的字符 print('我左边的引号是中文的符号') # print('我左边的引号是中文的符号') # ^ # SyntaxError: invalid

python限定方法参数类型、返回值类型、变量类型等

typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints) 类型检查,防止运行时出现参数和返回值类型.变量类型不符合. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型. 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒pycharm目前支持typing检查,参数类型错误会黄色提示 常用类型 int,long,float: 整型,长整形,浮点型 bool,str: 布尔型,字符串类型 List, Tuple, Dict,