Python中bytes与string转换详解:编码、解码及区别

季宁
季宁
发布时间:2026-10-16| 4人浏览过
原创

本文详细解析Python中bytes字节串与string字符串的转换机制。通过示例演示如何定义bytes、使用encode将字符串编码为字节序列,以及利用decode或str构造将字节解码回字符串。同时对比两者在存储形式、适用场景及取值范围上的核心区别,帮助开发者正确处理二进制数据与文本数据的交互。

背景

在实际开发过程中,经常需要处理字节串(bytes)与字符串(string)之间的相互转换,此处进行整理记录。

bytes类型仅负责以字节序列(即二进制形式)存储数据,并不关注数据的具体内容类型,如图片、文字或视频等。若需使用或展示这些数据,需依据相应的解析规则进行处理,从而获取对应类型的数据。例如对于常见的字符串类型,只需指定对应的字符编码格式,即可提取出字符串内容。

下文将通过代码示例展示bytes的构造方法,以及其与字符串之间的转换过程。

代码

首先查看相关代码示例。

#!/user/bin/env python
# coding=utf-8
"""
@project : csdn
@author  : huyi
@file   : byte_to_string.py
@ide    : PyCharm
@time   : 2021-12-23 11:47:45
"""
# 不指定字符集
b1 = b'I love u , baby'
print('b1', b1)
print(b1[:-3])
 
# 指定字符集
b2 = bytes('今天天气真好/哈哈', encoding='UTF-8')
print('b2', b2)
 
# 字符串转为bytes
str1 = '元宇宙会导致人类文明的停滞吗?'
b3 = str1.encode('UTF-8')
print('b3', b3)
 
# bytes转为字符串方法1
str2 = str(b3, 'UTF-8')
print('str2', str2)
 
# bytes转为字符串方法1
str3 = b3.decode('UTF-8')
print('str3', str3)

代码说明:

1、可以在字符串前添加小写字母b来定义bytes,但这种方式不推荐,建议使用b2的定义方式,以便灵活调整字符编码。

2、字符串类型的数据可以通过encode方法,按照指定的字符编码转换为bytes。

3、bytes类型可以通过str构造函数指定字符编码,或者使用decode方法,将bytes转换为字符串。

验证一下

PyDev console: starting.
Python 3.6.13 |Anaconda, Inc.| (default, Mar 16 2021, 11:37:27) [MSC v.1916 64 bit (AMD64)] on win32
runfile('D:/spyder/csdn/tool/byte_to_string.py', wdir='D:/spyder/csdn/tool')
b1 b'I love u , baby'
b'I love u , b'
b2 b'\xe4\xbb\x8a\xe5\xa4\xa9\xe5\xa4\xa9\xe6\xb0\x94\xe7\x9c\x9f\xe5\xa5\xbd/\xe5\x93\x88\xe5\x93\x88'
b3 b'\xe5\x85\x83\xe5\xae\x87\xe5\xae\x99\xe4\xbc\x9a\xe5\xaf\xbc\xe8\x87\xb4\xe4\xba\xba\xe7\xb1\xbb\xe6\x96\x87\xe6\x98\x8e\xe7\x9a\x84\xe5\x81\x9c\xe6\xbb\x9e\xe5\x90\x97\xef\xbc\x9f'
str2 元宇宙会导致人类文明的停滞吗?
str3 元宇宙会导致人类文明的停滞吗?

附:bytes和string区别

1、Python中的bytes也称为字节序列,并非字符。其取值范围为 0 <= bytes <= 255,输出时最前面会有字符b修饰;string则是Python中的字符串类型。

2、bytes主要供计算机识别和处理,string主要供人类阅读。

3、string经过编码(encode)转化为二进制对象,供计算机识别;bytes经过解码(decode)转化为string,供人类查看。但需注意,反编码时的编码规则存在范围限制,例如\xc8就不在UTF-8识别的范围内。

if __name__ == "__main__":
# 字节对象b
b = b"shuopython.com"
# 字符串对象s
s = "shuopython.com"
print(b)
print(type(b))
print(s)
print(type(s))

输出结果:

b'shuopython.com' <class 'bytes'> shuopython.com <class 'str'>

总结

到此这篇关于Python中bytes字节串和string字符串之间转换的文章就介绍到这了,更多相关Python bytes字和string转换内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。