python string类型 bytes类型 bytearray类型

2018-06-17 23:54:08来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

一、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'

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:windows下python-nmap运行过程中出现的问题及解决办法

下一篇:python3 三级菜单-基础版