python3 中bytes与str类型

python3最重要的新特性之一就是对字符串和二进制流做了明确的区分。文本总是unicode,由str类型表示用于显示。二进制则是由bytes类型表示,用于存储和传输。bytes是byte的序列,而str是unicode的序列。Python3不会以任意隐式的方式混用str和bytes,不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然)。也不能将字符串传入参数为字节流的函数(反之亦然)。

str与bytes之间的转换关系:str-->encode()-->bytes--->decode()--->str

转换方式1:encode() ,decode()

转换方式2:bytes()  , str()

不同编码类型的转换

bytes作为转换中间媒介通过encode() decode()在各种编码如utf-8 \gbk等之间进行相互转换。常见乱码错误,多是由于打开解码方式与文件编码方式不同造成的。

原文地址:https://www.cnblogs.com/ghming/p/8449613.html

时间: 2024-08-13 00:30:44

python3 中bytes与str类型的相关文章

Python3中bytes和HexStr之间的转换

1 Python3中bytes和HexStr之间的转换 ByteToHex的转换 def ByteToHex( bins ): """ Convert a byte string to it's hex string representation e.g. for output. """ return ''.join( [ "%02X" % x for x in bins ] ).strip() HexToByte的转换 de

Python 3中bytes和str的分别

最近把一段py2的代码转换到py3的代码,结果运行到向socket中写数据的代码部分出现了'str' does not support the buffer interface这样一个错误. 一番搜索之后,发现py3里是严格区分了str和bytes的.怎么理解str和bytes呢?你可以认为str是一段文本,比如“abcd#%$^*&”什么的,而bytes呢,是二进制的一堆0,1的比特而已.看下面的图: 可以看到str的类型是class 'str',而str.encode()以后类型是class

python2 与python3中最大的区别(编码问题bytes&str

1,在python2.x 中是不区分bytes和str类型的,在python3中bytes和str中是区分开的,str的所有操作bytes都支持 python2 中 >>> s = "abcdefg" >>> b = s.encode()    #或者使用下面的方式 >>> b = b"abcdefg">>> type(b)<type 'str'> python3中     #str

python3中encode和decode的一些基本用法

python3中encode和decode跟python2还是有一定的区别的,在python3中: encode(编码):按照某种规则将"文本"转换为"字节流".  python 3中表示:unicode变成str decode(解码):将"字节流"按照某种规则转换成"文本".   python3中表示:str变成unicode 字符串在Python内部的表示是Unicode编码,因此在做编码转换时,通常需要以Unicode作

Python3中内置类型bytes和str用法及byte和string之间各种编码转换

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰.你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然). python3.0中怎么创建bytes型数据 1 2 bytes([1,2,3,4,5,6,7,8,9]) bytes("python&q

Python3 中的 str 和 bytes

Python3 中的 str 和 bytes 与 Python2.X 不同,Python3.X 严格区分了 str 和 bytes 两种类型.文本为 Unicode,由 str 类型表示:二进制数据则由 bytes 表示. Python3.X 不会以任意隐式的方式混用 str 和 bytes.因此使用者不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然). 例如 Python3.X 中的socket.send()函数,如果传入未编码的字

python3.5 Str类型与bytes类型转换

python3.5 Str类型与bytes类型转换 1 #str与byte转换 2 a = "李璐" 3 b = bytes(a,encoding="utf-8") 4 print(b) 5 c = bytes(a,encoding="gbk") 6 print(c) 7 d = str(b,encoding="utf-8") 8 print(d) 9 e = str(c,encoding="gbk") 1

Python3的bytes/str之别

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰.你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然).这是件好事. 不管怎样,字符串和字节包之间的界线是必然的,下面的图解非常重要,务请牢记于心: 字符串可以编码成字节包,而字节包可以解码成字符

三目运算的使用&amp;bytes类型转str类型

一.三目运算的使用 就像c语言中有三目运算符一样,python中也有三目运算符,废话不多说直接上代码 1 a=3 2 c=4 3 b=a if a>c else c 4 print(b) 意思就和 1 if a>c: 2 b=a 3 else: 4 b=c 是一样的. 二.bytes类型转str类型 在python中视频和音频的传递是二进制的,所以就需要用到str类型和bytes类型之间的转换. 不像在Python2中的两种类型傻傻分不清楚,在python3中两种类型各自独立没有关联,并不能自