Python字节串类型bytes及用法

 更新时间:2022年05月28日 10:30:05   作者:springsnow  
这篇文章介绍了Python字节串类型bytes及用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、bytes 字节串类型概述

Python 3 新增了 bytes 类型,用于代表字节串,是一个类型,不是C#中的列表。

由于 bytes 保存的就是原始的字节(二进制格式)数据,因此 bytes 对象可用于在网络上传输数据,也可用于存储各种二进制格式的文件,比如图片、音乐等文件。

1、字节串与字符串之间的区别

bytes 和 str 除操作的数据单元不同之外,它们支持的所有方法都基本相同,bytes 也是不可变序列。

  • 字符串(str)由多个字符组成,以字符为单位进行操作;
  • 字节串(bytes)由多个字节组成,以字节为单位进行操作。

2、字节概述

计算机底层有两个基本概念:位(bit)和字节(Byte),其中

  • bit 代表 1 位,要么是 0,要么是 1;
  • Byte 代表 1 字节,1 字节包含 8 位。

在字节串中每个数据单元都是字节,也就是 8 位,其中每 4 位(相当于 4 位二进制数,最小值为 0 ,最大值为 15)可以用一个十六进制数来表示,因此每字节需要两个十六进制数表示,

b'\xe6\x88\x91\xe7\x88\xb1Python\xe7\xbc\x96\xe7\xa8\x8b',
# 比如 :\xe6 就表示 1 字节,其中 \x 表示十六进制,e6 就是两位的十六进制数。

Unicode 字符集,包括汉字,为两个字节(16 位,支持 65536 个字符编号)。实际使用的 UTF-8, UTF-16 等其实都属于 Unicode 字符集。

二、字节串与字符串之间的转换

bytes 对象只负责以字节(二进制格式)序列来记录数据,至于这些数据到底表示什么内容,完全由程序决定。如果采用合适的字符集,字符串可以转换成字节串;反过来,字节串也可以恢复成对应的字符串。

1、将一个字符串转换成 bytes 对象

如果希望将一个字符串转换成 bytes 对象,有如下三种方式:

下面程序中 b1~b5 都是字节串对象,该程序示范了以不同方式来构建字节串对象。其中 b2、b3 都是直接在 ASCII 字符串前添加b前缀来得到字节串的:b4 调用 bytes() 函数来构建字节串;而 b5 则调用字符串的 encode 方法来构建字节串。

  • 如果字符串内容都是 ASCII 字符,则可以通过直接在字符串之前添加 b 来构建字节串值。
# 创建一个空的bytes
b1 = bytes()
# 创建一个空的bytes值
b2 = b''
# 1、通过b前缀指定hello是bytes类型的值
b3 = b'hello'
print(b3)
print(b3[0])
print(b3[2:4])

#b'hello'
#104
#b'll'
  • 调用 bytes() 函数(其实是 bytes 的构造方法)将字符串按指定字符集转换成字节串,
    如果不指定字符集,默认使用 UTF-8 字符集。
# 调用bytes方法将字符串转成bytes对象
b4 = bytes('我爱Python编程',encoding='utf-8')
print(b4)
#b'\xe6\x88\x91\xe7\x88\xb1Python\xe7\xbc\x96\xe7\xa8\x8b'
  • 调用字符串本身的encode() 方法将字符串按指定字符集转换成字节串(常用)
    如果不指定字符集,默认使用 UTF-8 字符集。
# 利用字符串的encode()方法编码成bytes,默认使用utf-8字符集
b5 = "学习Python很有趣".encode('utf-8')
print(b5)
#b'\xe5\xad\xa6\xe4\xb9\xa0Python\xe5\xbe\x88\xe6\x9c\x89\xe8\xb6\xa3'

从上面的输出结果可以看出,字节串和字符串非常相似,只是字节串里的每个数据单元都是 1 字节。

2、decode():将一个bytes 对象转换成字符串

如果程序获得了 bytes 对象,也可调用 bytes 对象的 decode() 方法将其解码成字符串,

#将bytes 对象解码成字符串,默认使用UTF-8进行解码
st = b5.decode('utf-8')
print(st)#学习Python很有趣

到此这篇关于Python字节串类型bytes及用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python下的subprocess模块的入门指引

    Python下的subprocess模块的入门指引

    这篇文章主要介绍了Python下的subprocess模块的入门指引,subprocess模块被用于Python的多线程编程,需要的朋友可以参考下
    2015-04-04
  • 用python做一个搜索引擎(Pylucene)的实例代码

    用python做一个搜索引擎(Pylucene)的实例代码

    下面小编就为大家带来一篇用python做一个搜索引擎(Pylucene)的实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Python的迭代器和生成器

    Python的迭代器和生成器

    由于在看一个python项目,遇到了迭代器和生成器的使用,正好之前自己也没有细看这部分,今天就稍微梳理一下吧!
    2015-07-07
  • Django通过自定义认证后端实现多种登录方式验证

    Django通过自定义认证后端实现多种登录方式验证

    Django提供了用户认证系统,那么如何在项目中进行应用呢?在本文中小编将给大家介绍如何使用用户认证系统,实现我们业务场景中常见的多种登录方式验证。感兴趣的小伙伴可以了解一下
    2021-12-12
  • 一文详解CNN 解决 Flowers 图像分类任务

    一文详解CNN 解决 Flowers 图像分类任务

    这篇文章主要为大家介绍了CNN 解决 Flowers 图像分类任务详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Python assert语句的简单使用示例

    Python assert语句的简单使用示例

    这篇文章主要给大家介绍了关于Python assert语句的简单使用,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Python Numpy 控制台完全输出ndarray的实现

    Python Numpy 控制台完全输出ndarray的实现

    这篇文章主要介绍了Python Numpy 控制台完全输出ndarray的实现方式,希望给大家做个参考,一起跟随小编过来看看吧
    2020-02-02
  • 如何使用conda和pip批量安装Python包

    如何使用conda和pip批量安装Python包

    这篇文章主要介绍了如何使用conda和pip批量安装Python包问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Python中Pexpect库的使用

    Python中Pexpect库的使用

    本文主要介绍了Python中Pexpect库的使用,我们讨论了 pexpect 的三种方法,它们可用于执行不同的功能,并且它们可以一起使用以使其成为一个大函数,感兴趣的可以了解下
    2023-10-10
  • Python文件操作之二进制文件详解

    Python文件操作之二进制文件详解

    下面小编就为大家带来一篇使用Python文件操作之二进制文件。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-09-09

最新评论