pythonbytes类型
⑴ python Hex与Bytes间的转换
在CAN、LIN、Ethernet等车载总线上,数据通常是以Bytes类型进行传输的。
所以在测试过程中从Bytes转为Hex格式的string,以及反向的转换就变得十分常用。
我们以一条诊断测试的Case为例:
(2)步骤4中,我们用到了Bytes到Hex(String)的转换。这里我们用到了bytes内置方法.hex()。
⑵ 05-Python的bytes类型介绍
bytes表示字节数组,每个单元表示单个字节。该类型字符串的表示方法和str类型类似,不过需要在前面加上b,比如:
a=b'abc'
print(type(a))#输出结果<class 'bytes'>
当然也可以使用双引号或者三引号。
需要注意的是,不能使用中文字符,因为中文字符无法用单个0~255之间的值来表示。另外可以使用“\数值”来表示单个字符,如123表示S。
b'\123' #等同于b's'
它们之间是可以相互转换的。如从str转换成bytes,可以使用encode()成员函数。
a="abc"
b=a.encode("utf-8")
print(type(b))#输出结果<class 'bytes'>
从bytes类型转换成str类型可以使用成员函数decode()。
⑶ Python文件处理里encoding和encode有事区别,bytes类型是什么意思
python问题我来回答你。
首先你要知道的是,字符串在Python内部的表示是unicode(统一码、万国码)编码,很多编程语言都是这么设计的,各个国家通用编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。
因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码。
bytes类型是 Python 3.x版本新增的数据类型,在 Python 2.x 中是不存在的。字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的。
bytes 只负责以字节序列的形式(二进制形式)来存储数据,至于这些数据到底表示什么内容(字符串、数字、图片、音频等),完全由程序的解析方式决定。
说白了,bytes 只是简单地记录内存中的原始数据,至于如何使用这些数据,bytes 并不在意,你想怎么使用就怎么使用,bytes 并不约束你的行为。
bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;bytes 也可以用来存储图片、音频、视频等二进制格式的文件。
举个例子:
b = b'' # 创建一个空的bytes
b = byte() # 创建一个空的bytes
b = b'hello' # 直接指定这个hello是bytes类型
b = bytes('string',encoding='编码类型') #利用内置bytes方法,将字符串转换为指定编码的bytes
b = str.encode('编码类型') # 利用字符串的encode方法编码成bytes,默认为utf-8类型
bytes.decode('编码类型'):将bytes对象解码成字符串,默认使用utf-8进行解码。
⑷ 了解python中bytes,str和unicode的区别
str是经过编好码的字符串,如unicode,gb2312,ascii编码,可以表示不同语言中的字符,可以解码成byte byte是字节,只能是ascii码0-255的字符,表示未经编码处理的原始字符串
⑸ 区分 bytes str 和 unicode
Python3 有两种表示字符序列的类型: bytes 和 str 。其中 bytes 是一种包含原始8位值的序列; str 是一种包含 Unicode 字符的序列。
Python2 也有两种表示字符序列的类型: str 和 unicode 。其中 str 是一种包含原始8位值的序列; unicode 是一种包含 Unicode 字符的序列。
把 Unicode 字符转换成二进制数据(原始8位值)有多种办法,最常见的编码方式就是 UTF-8。Python3 的 str 实例或者 Python2 的 unicode 实例表示的 Unicode 字符要想转换成二进制数据,必须使用 encode 方法;要想把二进制数据转换成 Unicode 字符,则必须使用 decode 方法。
编码和解码操作我们通常会放在最外围来做,程序的核心部分应该使用 Unicode 字符类型,即 Python3 中的 str 和 Python2 中的 unicode ,并且不要对字符编码做任何假设。因此,在对输入的数据进行操作之前,我们通常会在应用中定义好辅助函数,以保证字符序列的类型符合以下预期:
下面,我们针对 Python2 和 Python3 ,分别编写 2 个辅助函数,以便在两种情况之间转换,确保转换后的输入数据符合预期的字符序列类型。
接受 str 或 bytes ,确保返回 str 的辅助函数:
运行结果:
接受 str 或 bytes ,确保返回 bytes 的辅助函数:
运行结果:
接受 str 或 unicode ,确保返回 unicode 的辅助函数:
Python2 中的 str 在程序中均以原始的 8 位值表示:
下面的写法,使用 format 函数连接 2 个字符序列,返回新的 str 是没问题的:
可若要返回 unicode 字符序列,则会报 UnicodeDecodeError :
这个时候我们就需要上述编写的 to_unicode 辅助函数,把 var2 转变为 unicode 序列:
接受 str 或 unicode ,确保返回 str 的辅助函数:
定义一个 unicode 字符序列:
使用 format 函数连接 2 个字符序列,返回 unicode 字符序列:
同理,返回 str ,则会报 UnicodeEncodeError :
我们需要借助上述编写的辅助函数 to_str 将 var3 转换为字节序列:
⑹ python3转成bytes其中bytes()与encode()有什么区别
就将str类型转换为Bytes类型这一过程的实质而言,没有区别.
硬要讲区别,大概就是语法上的区别了,一个是函数,一个是方法.
需要传递函数的时候,你不能使用方法.
需要调用方法的时候,你不能写成函数的形式.
⑺ python 里 telnetlib 的 tn.write(b"ls\n")
python3中bytes类型的意思
读取文件,然后对字符串解码就是这种b'cmd'
⑻ python内建数据类型有哪些
python内置的常用数据类型有:数字、字符串、Bytes、列表、元组、字典、集合、布尔等
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
像大多数语言一样,数值类型的赋值和计算都是很直观的。
内置的 type() 函数可以用来查询变量所指的对象类型。
⑼ python的bytes类型有什么用,什么情况下使用
当使用文本模式打开文件时,它返回一个TextIOBase的子类。
当使用二进制打开时,返回的是BufferedIOBase的子类。
准确细分为:可读二进制模式,返回BufferReader对象;在可写和追加模式中,返回BufferWriter对象,在读写模式中,返回BufferRandom。
当buffering关闭时,原始数据流,一个RawIOBase的子类将被返回。
⑽ python str与bytes编码解码
下面一张图搞懂编码、解码、编码表之间的关系。
不难看出,它们是一种根据编码表进行翻译、映射的过程:
实际上,字符串类型只有encode()方法,没有decode()方法,而bytes类型只有decode()方法而没有encode()方法。
二进制格式的数据也常称为裸数据(raw data),所以str数据经过编码后得到raw data,raw data解码后得到的str。
上面说了,编码是将字符数据转换成字节数据(raw data),解码是将字节数据转换成字符数据。在Python中字符数据也就是字符串,即str类型,字节数据也就是bytes类型或bytearray类型。
编码时,可以使用字节类型的构造方法bytes()、bytearray()来构造字节,也可以使用str类型的encode()方法来转换。
解码时,可以使用str类型的构造方法str()来构造字符串,也可以使用bytes、bytearray()类型的decode()方法。
另外需要注意的是,编码和解码的过程中都需要指定编码表(字符集),默认采用的是utf-8字符集。
例如,使用encode()的方式将str编码为bytes数据。
使用bytes()和bytearray()将str构造成bytes或bytearray数据,这两个方法都要求str->byte的过程中给定编码。
实际上,bytes()、bytearray()这两个方法构造字节数据的时候还有点复杂,因为可以从多个数据源来构造,比如字符串、整数值、buffer。如何使用这两个方法构造字节数据,详细内容参考help(bytes)和help(bytearray)给出的说明,这里给几个简单示例。
构造bytes的方式:
构造bytearray的方式:
解码是字节序列到str类型的转换。
例如,使用decode()方法进行解码"我"字,它的utf-8的编码对应为"\xe6\x88\x91":
使用str()进行转换。
当编码、解码的过程使用了不同的(不兼容的)编码表时,就会出现乱码。所以,解决乱码的唯一方式是指定对应的编码表进行编码、解码。
例如,使用utf-8编码"我"字,得到一个bytes序列,然后使用gbk解码这个bytes序列。
这里报错了,因为utf-8的字节序列里有gbk无法解码的字节。如果使用文本编辑器一样的工具去显化这个过程,得到的将是乱码字符。
原文地址: https://www.cnblogs.com/f-ck-need-u/p/10185965.html