码迷,mamicode.com
首页 > 编程语言 > 详细

python string类型 bytes类型 bytearray类型

时间:2017-12-16 19:47:51      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:byte   log   pre   list   str   不同的   没有   大小   必须   

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

str类型:

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

bytes类型:

1 >>> b = babc
2 >>> b
3 babc
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 = babcdef
2 >>> bay = bytearray(b)
3 >>> bay
4 bytearray(babcdef)
5 >>> b = bytes(bay)
6 >>> b
7 babcdef

六、bytearray和str转换

1 >>> a = abcdef
2 >>> b = bytearray(a, encoding=utf-8)
3 >>> b
4 bytearray(babcdef)
5 >>> a = b.decode(encoding=utf-8)
6 >>> a
7 abcdef

 

python string类型 bytes类型 bytearray类型

标签:byte   log   pre   list   str   不同的   没有   大小   必须   

原文地址:http://www.cnblogs.com/gundan/p/8047315.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!