bytes([source[, encoding[, errors]]])
返回一个根据参数 source 生成的字节数组(bytes)对象,数组里的元素不可修改,并且元素的取值范围为 [0, 255]。
函数 bytes()
跟 bytearray()
的区别只是数组里的元素是否可以修改,而关于使用方法这些都是相同的,包括参数的定义方式及参数的意义也是相同的(参数定义说明请查看 bytearray()
函数:http://www.jianshu.com/p/4a0deb8cf340)。
示例
>>> ii=bytes('abc', 'utf-8')
>>> ii
b'abc'
>>> ii[0]
97
>>> ii[1]
98
>>> ii[2]
99
>>> uu=bytes('中文汉字', 'utf-8')
>>> uu
b'\xe4\xb8\xad\xe6\x96\x87\xe6\xb1\x89\xe5\xad\x97'
>>> uu[0]
228
>>> uu[1]
184
>>> uu[2]
173
bytearray
和 bytes
不一样的地方在于 bytearray
是可变的:
>>> ii='人生苦短,我用Python!'
>>> bb=bytearray(ii, 'utf-8')
>>> bb
bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
>>> bb.decode()
'人生苦短,我用Python!'
>>> bb[:12]=bytearray('生命短暂', 'utf-8')
>>> bb
bytearray(b'\xe7\x94\x9f\xe5\x91\xbd\xe7\x9f\xad\xe6\x9a\x82\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
>>> bb.decode()
'生命短暂,我用Python!'
>>>
# 试图修改 bytes 返回的数组对象,提示错误:TypeError: 'bytes' object does not support item assignment
>>> ii
'人生苦短,我用Python!'
>>> uu=bytes(ii, 'utf-8')
>>> uu
b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'
>>> uu.decode()
'人生苦短,我用Python!'
>>> uu[:12]=bytes('生命短暂','utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'bytes' object does not support item assignment