python-bytes、bytearray和str在python2和3中的区别

概括

python2中bytes与str可以混用,python3中bytes是不可改变的,需要转化,bytearray则是可变的bytes。
首先str是采用Unicode编码方式的序列,主要用于显示。而bytes是字节序列,主要用于网络和文件传输。在aes解密或者网络数据中,数据应该是bytes或bytearray。str和bytes的相互转化就是编码和解码。
此外在python3中,bytes can only contain ASCII literal characters.

python2

python-bytes、bytearray和str在python2和3中的区别_第1张图片

python3

python-bytes、bytearray和str在python2和3中的区别_第2张图片

str到bytes

encode里可以指定编码格式,如’utf-8’。ascii码可以直接用b’'转化。

data=bytes("白日依山尽".encode())

str到bytearray

data=bytearray("白日依山尽".encode())

bytes到bytearray

bytes=b"aabbcc"
byarray=bytearray(bytes)

bytearray到str

str=byarray.decode('utf-8')
bytes=bytes(byarray)

常见的网络传输时,有hex字符串转为bytearray的需求可以使用bytearray.fromhex(),这时是不需要编码的。

hexstr="098811"
byarray=bytearray.fromhex(hexstr)
print(byarray)
bytearray(b'\t\x88\x11')

你可能感兴趣的:(python大法好,python)