Python bytes类型详解

yizhihongxing

什么是bytes?

byte,也称为字节,是计算机唯一可以存储的东西。也就是说,你想要在计算机中存储任何东西,都需要对其进行编码,将其转换为字节。例如:

  • 存储音乐,必须先使用MP3、WAV等方式对其编码。
  • 存储图片,必须先使JPG、JPEG等方式对其编码。
  • 存储文本,必须使用ASCII、UTF-8等方式对其编码。

这里面,MP3、WAV、JPG、JPEG、ASCII、UTF-8等都是编码的类型,每种类型的编码方式不同,所以在解码时也要通过编码时的方式解码。

bytes与string的区别

同理,在Python中,bytes就是:字节序列。它只存储二进制的0和1,人类是无法理解的。

而 string 字符串是字符序列,人类可以理解的,但它无法直接存储在计算机中,必须要对其编码(转换为bytes)。有多种编码方式可以将string转换为bytes,如ASCII、UTF-8、GBK等。举例如下:

i_string='I am a string'.encode('UTF-8')
print(i_string)

输出:b'I am a string'

在这个例子中,Python使用UTF-8的编码方式对变量i_string的值“I am a string”进行了编码,然后存入到了计算机中。

如果我们用print函数打印出i_string的值,Python会将其表示为`b'I am a string'。这并不代表实际存储在计算机中的就是这个值,而是在打印时,Python使用UTF-8解码了它们,所以才能以字符的形式展现出来。但它在字符前添加了“b”这个字符,以标识它是bytes类型。

当然,我们也可以将bytes解码回string,如下:

i_bytes = b'I am a string'.decode('UTF-8')
print(i_bytes)

上面变量i_bytes输出的结果为:I am a string

编码解码是逆运算,计算机在将字符写入到磁盘前进行编码,从磁盘中读取时进行解码

bytes的作用和使用方式

bytes类型是Python3.0以上版本新增的类型。如上文所知,bytes只负责以二进制形式存储数据,至于这些二进制数据代表了什么内容,完全由程序的编码方式决定。

除了存储图片、视频、音乐等文件外,bytes类型的数据也非常适合在互联网上传输,所以一般用于网络通信。

在Python中,bytes和string类型关系最为紧密,你可以将字符串转换为bytes对象,你可以使用以下两种方式:

#通过构造函数方式创建 bytes 变量
b1 = bytes()#无参数创建空的bytes
b2 = bytes('Python技术站',encoding='UTF-8')#指定UTF-8字符编码方式,转换为bytes
print(b1)
print(b2)

#通过字符形式创建 bytes 变量
bs1 = b''
bs2 = b'http://pythonjishu.com'
print(bs1)
print(bs2)

输出:

b''
b'Python\xe6\x8a\x80\xe6\x9c\xaf\xe7\xab\x99'
b''
b'http://pythonjishu.com'

从运行结果可以发现,变量b2的输出结果并没有原样输出,而是输出了十六进制形式的字符编码值,这是因为Python将bytes转换为字符时,是按照单个字节处理数据的,而非ASCII字符(例子中的中文)一般占用两个以上的字节,Python无法一次性处理,所以会以十六进制形式输出。

对于非ASCII字符,bytes有一个decode()方法,通过该方法可以将bytes对象重新转换成字符串。例如上面的b2变量:

b2.decode('UTF-8')

输出结果:

'Python技术站'

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python bytes类型详解 - Python技术站

(1)
上一篇 2022年11月28日 下午8:00
下一篇 2022年12月18日

相关文章

  • 详解Python中数据类型的转换

    当我们在 Python 中处理各种类型的数据时,有时需要将某种类型的数据转化为另一种类型的数据。Python 中提供了许多类型转换函数,可以将任何类型的数据转化为所需的类型数据。本文将详细探讨 Python 中数据类型的转换。 类型转换函数 Python 中常用的类型转换函数有以下几个: int():将一个字符串或者一个浮点数转换为一个整数。 float()…

    python 2023年5月14日
    00
  • Python 作为小程序后端的三种实现方法(推荐)

    下面为您详细讲解“Python 作为小程序后端的三种实现方法(推荐)”的完整攻略。 1. 背景 随着小程序的流行,越来越多的开发者开始选择使用 Python 作为小程序后端,但是 Python 作为一门解释性的语言,在生产环境中还需要做一定的优化才能满足性能的要求。针对这种情况,本文将介绍三种 Python 作为小程序后端的实现方法,以供参考。 2. 方法一…

    python 2023年5月23日
    00
  • Python决策树和随机森林算法实例详解

    以下是关于“Python决策树和随机森林算法实例详解”的完整攻略: 简介 决策树和随机森林是常用的机器学习算法,它们可以用于分类和回归问题。本教程将介绍如何使用Python实现决策树和随机森林算法,并提供两个示例。 决策树 决策树是一种常用的分类和回归算法,它可以用于预测离散和连续变量。决策树将数据集分成多个子集,每个子集对应一个决策节点。决策节点包含一个特…

    python 2023年5月14日
    00
  • 解决pytorch 数据类型报错的问题

    以下是关于解决PyTorch数据类型报错的问题的完整攻略: 问题描述 在使用PyTorch进行深度学习模型训练时可能会遇到数据类型报错的问题。这个通常是由于数据类型不匹配而引起的。解决这个问题可以帮助正确地训练深度学习模型。 解决方法 使用以下步骤解决PyTorch数据类型报错的问题: 确认数据类型。 在使用PyTorch进行深度学习模型训时,需要确认数据的…

    python 2023年5月13日
    00
  • python中的不可变数据类型与可变数据类型详解

    Python中的不可变数据类型与可变数据类型详解 Python中的数据类型分为两类:不可变(Immutable)和可变(Mutable)。不可变类型的值在创建后不能修改,当尝试修改时,Python会创建一个新的对象并返回新对象引用,而不是修改原对象。而可变类型的值是可以修改的,原对象的引用不会变。 以下是常见的Python中的不可变数据类型和可变数据类型: …

    python 2023年5月14日
    00
  • Python Print实现在输出中插入变量的例子

    当我们使用Python进行编程的时候,常常需要在输出的文本中插入变量的值。Python提供了一种简单且强大的方法来实现这一点:在print语句中使用字符串格式化符号“%”。 使用“%”符号进行字符串格式化 在Python中,使用“%”符号进行字符串格式化是插入变量最常用的方法。我们可以在一个字符串中使用“%”符号来指示变量的位置,然后在print语句中使用“…

    python 2023年6月5日
    00
  • 详解PyMySQL插入字典类型的数据

    接下来我将详细讲解“详解PyMySQL插入字典类型的数据”的完整攻略。 什么是PyMySQL? PyMySQL是一个基于Python语言实现的MySQL数据库操作库。它使用纯Python语言编写,无需额外依赖,使用灵活简单,并且完全兼容MySQL数据库。 PyMySQL插入字典类型的数据 在Python中,字典类型是非常常见的数据类型之一。但是,在将字典类型…

    python 2023年5月13日
    00
  • 用Python实现Newton插值法

    用Python实现Newton插值法 一、方法介绍 牛顿插值法(Newton Interpolation)是一种通过将数据点连接一个多项式来逼近数据的方法。它使用一个递推公式来得出对应的插值多项式,因此也叫做Newton递推公式。它的主要思想是将插值多项式表示为一个递推公式,每次插入一个数据点时,就可以更新多项式的系数。 二、代码实现 下面是用Python实…

    python 2023年5月19日
    00

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

合作推广
合作推广
分享本页
返回顶部