bytes 是 python3.x 之后出现的新数据类型。
一、bytes与str之间可以互相转换,需要指明使用的编码方式。如下:
#str转bytes name = str('lucy') nameBytes = bytes(name,encoding='utf-8') print(nameBytes) #显示: b'lucy' print(type(nameBytes)) #显示: <class 'bytes'> #bytes转str nameStr = str(nameBytes,encoding='utf-8') print(nameStr) #显示: lucy print(type(nameStr)) #显示: <class 'str'>
name = str('露西') nameBytes = bytes(name,encoding='utf-8') print(nameBytes) #显示: b'\xe9\x9c\xb2\xe8\xa5\xbf' print(type(nameBytes)) #显示: <class 'bytes'> #bytes转str nameStr = str(nameBytes,encoding='utf-8') print(nameStr) #显示:露西 print(type(nameStr)) #显示: <class 'str'>
二、utf-8编码中,字母和数字各占一个字节,通过bytes转换后,可以直接与各进制互相转换。
name = str('lucy') nameBytes = bytes(name,encoding='utf-8') #转成bytes,每个字母占一个字节 print(nameBytes) #显示:b'lucy' for i in nameBytes: #for 循环i每次取一个字符:一个字节 print(i,hex(i),bin(i)) ''' 108 0x6c 0b1101100 117 0x75 0b1110101 99 0x63 0b1100011 121 0x79 0b1111001 '''
utf-8编码中,一个汉字占三个字节,通过bytes转换后,各进制间可以互相转换。
name = str('露西') for i in name: #for 循环i每次取一个字符:一个汉字 print(i) nameBytes = bytes(name,encoding='utf-8') #转换成bytes,utf-8每个汉字占3字节 print(nameBytes) #显示:b'\xe9\x9c\xb2\xe8\xa5\xbf' ,默认十六进制表示。 for i in nameBytes: #for循环默认十进制表示 print(i,hex(i),bin(i)) ''' 233 0xe9 0b11101001 156 0x9c 0b10011100 178 0xb2 0b10110010 232 0xe8 0b11101000 165 0xa5 0b10100101 191 0xbf 0b10111111 '''
三、GBK编码中,字母和数字各占一个字节,通过bytes转换后,可以直接与各进制互相转换。结果与utf-8相同。
name = str('lucy') nameBytes = bytes(name,encoding='GBK') #转成bytes,每个字母占一个字节 print(nameBytes) #显示:b'lucy' for i in nameBytes: #for 循环i每次取一个字符:一个字节 print(i,hex(i),bin(i)) ''' 108 0x6c 0b1101100 117 0x75 0b1110101 99 0x63 0b1100011 121 0x79 0b1111001 '''
GBK编码中,一个汉字占两个字节,通过bytes转换后,各进制间可以互相转换。结果与utf-8不同。
name = str('露西') for i in name: #for 循环i每次取一个字符:一个汉字 print(i) nameBytes = bytes(name,encoding='GBK') #转换成bytes,GBK每个汉字占2字节 print(nameBytes) #显示:b'\xc2\xb6\xce\xf7' ,默认十六进制表示。 for i in nameBytes: #for循环默认十进制表示 print(i,hex(i),bin(i)) ''' 194 0xc2 0b11000010 182 0xb6 0b10110110 206 0xce 0b11001110 247 0xf7 0b11110111 '''
注意:str类型的中文,经过bytes转换后,如果print直接打印,默认输出十六进制;通过for循环打印,默认输出十进制。
浙公网安备 33010602011771号