py3中的str to byte

Python025

py3中的str to byte,第1张

Python3 最重要的新特性大概要算是对文本(text)和二进制数据(binary data)作了更为清晰的区分。(详见参考 Python document)

编码与解码的过程

文本总是 Unicode,由 str 类型表示。

二进制数据则由 bytes 类型表示。

那么什么是 bytes、什么是 Unicode 呢?(参考资料 知乎以及SO)

首先计算机能存储的唯一东西就是 bytes。所以为了在计算机中存储东西,我们首先得将其编码(encode),例如将其转化为 bytes。比如:

要想保存音乐,我们首先得用 MP3, WAV 等将其编码

要想保存图片,我们首先得用 PNG, JPEG 等将其编码

要想保存文本,我们首先得用 ASCII, UTF-8 等将其编码

Unicode 是字符集,不是字符编码。Unicode 把全世界的字符都搜集并且编号了,但是没有规定具体的编码规则。编码规则有 UTF-8、GBK 之类的。

Python3 不会以任意隐式的方式混用 str 和 bytes。正是这使得两者的区分特别清晰,你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。

创建 bytes 型数据

使用 Python3 的内置函数 bytes 函数。

class bytes([source[, encoding[, errors]]])

创建字符串

相互转换

如果你仔细看给的 SO 链接的话,就应该知道将 string 转化成 bytes 首先需要进行编码(encode),而 encode 是可以使用许多不同的 encodings 的(参考资料 Standard Encodings)。而将 bytes 转化成 string 需要进行解码(decode),解码的 encodings 往往需要根据数据的实际编码情况来设定。

string to bytes

按 utf-8 的方式编码,转成 bytes

按 gb2312 的方式编码,转成 bytes

解码成 string,使用 gb2312 的方式

原文链接: https://blog.csdn.net/sinat_41104353/java/article/details/79283619

当Python 2.0于2000年问世时,该语言还不太流行。随着越来越多的开发人员开始接受并严肃地使用它,语言中的缺陷变得更加明显,但如果没有重大变化,它们就无法修复。

当Python 3.0于2008年首次推出时,引入了一些重大更改,这些更改带来了一些新功能和改进,但该语言与Python 2.x不兼容。这意味着开发人员需要重构他们的代码以利用Python 3.0,并且其中许多人不愿意这样做 - 包括许多流行的第三方库和框架的开发人员。

因此,Python基本上分为两个支持的版本:2.x“遗留”分支和3.x“当前”分支。3.x分支是主动开发的重点,而2.x分支仅接收错误修复和安全更新。

如今,大多数社区已经转向Python 3.x,这就是我推荐使用的版本。今天使用Python 2.x的唯一原因是你的项目依赖于仍然不支持Python 3.x的库或框架。

Python2.0与Python3.0主要区别在于以下几个方面:

1、输出

Python2.0使用print关键字进行输出,比如:print “Hello”

Python3.0使用print()函数,比如print("Hello")。

2、输入方面

Python2.0使用raw_input()函数,比如:name=raw_input("请输入你的名字:")

Python3.0使用input()函数,比如:name=input("请输入你的名字:")。

3、字符串的编码格式

Python2.0默认采用ASCII编码对输入的字符串进行编码

而Python3.0默认采用Unicode编码对字符串进行编码。

4、格式化字符串的方式

Python2.0用%占位符进行标准化格式输出字符串,比如:“Hello,%s" % ("World")

Python3.0用format()函数,比如:”Hello,{}“.format("World")。

5、源文件的编码格式

Python2.0默认采用ASCII,因此使用中文时要在源文件开头加上一行注释:# -- coding: utf-8 --

Python3.0默认采用utf-8。