详解python string类型 bytes类型 bytearray类型
一、python3对文本和二进制数据做了区分。文本是Unicode编码,str类型,用于显示。二进制类型是bytes类型,用于存储和传输。bytes是byte的序列,而str是unicode的序列。
str类型:
>>>s=u'你好' >>>s '你好' >>>type(s)
bytes类型:
>>>b=b'abc' >>>b b'abc' >>>type(b)
二、str和bytes之间的转换关系:str-->encode()-->bytes-->decode()-->str
转换方式一:encode(),decode()
>>>a=u'你好' >>>b=a.encode('utf-8') >>>b b'\xe4\xbd\xa0\xe5\xa5\xbd' >>>type(b)>>>new_a=b.decode('utf-8') >>>new_a '你好' >>>type(new_a)
转换方式二:bytes(),str()
>>>a=u'你好' >>>b=bytes(a,encoding='utf-8') >>>b b'\xe4\xbd\xa0\xe5\xa5\xbd' >>>type(b)>>>new_a=str(b,encoding='utf-8') >>>new_a '你好' >>>type(new_a)
三、bytearray类型
bytearray类是range0<=x<256的一个可变序列。
可选的源参数可以用几种不同的方式来初始化数组:
•如果它是一个字符串,那么您还必须给出编码(以及可选的错误)参数;bytearray()然后使用str.encode()将字符串转换为字节。
•如果它是一个整数,那么数组将具有这个大小,并将用null字节初始化。
•如果它是符合缓冲区接口的对象,则将使用对象的只读缓冲区来初始化字节数组。
•如果它是可迭代的,那么它必须是range0<=x<256的整数的迭代,它被用作数组的初始内容
•如果没有参数,则创建一个大小为0的数组。
当源参数是一个字符串时:
>>>b=bytearray(u'你好',encoding='utf-8') >>>b bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd') >>>type(b)
当源参数是一个整数时:
>>>b=bytearray(5) >>>b bytearray(b'\x00\x00\x00\x00\x00') >>>type(b)
当源参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0<=x<256:
>>>b=bytearray([1,2,3,4,255]) >>>b bytearray(b'\x01\x02\x03\x04\xff') >>>type(b)四、bytes和bytearray区别
bytes是不可变的,同str。bytearray是可变的,同list。
>>>b=bytearray() >>>b bytearray(b'') >>>b.append(10) >>>b bytearray(b'\n') >>>b.append(100) >>>b bytearray(b'\nd') >>>b.remove(100) >>>b bytearray(b'\n') >>>b.insert(0,150) >>>b bytearray(b'\x96\n') >>>b.extend([1,3,5]) >>>b bytearray(b'\x96\n\x01\x03\x05') >>>b.pop(2) 1 >>>b bytearray(b'\x96\n\x03\x05') >>>b.reverse() >>>b bytearray(b'\x05\x03\n\x96') >>>b.clear() >>>b bytearray(b'')五、bytes和bytearray转换
>>>b=b'abcdef' >>>bay=bytearray(b) >>>bay bytearray(b'abcdef') >>>b=bytes(bay) >>>b b'abcdef'六、bytearray和str转换
>>>a='abcdef' >>>b=bytearray(a,encoding='utf-8') >>>b bytearray(b'abcdef') >>>a=b.decode(encoding='utf-8') >>>a 'abcdef'总结
以上所述是小编给大家介绍的详解pythonstring类型bytes类型bytearray类型,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。