python3 bytes数据类型探讨
python3中str和bytes分开了,那么bytes与str之间到底是什么关系呢?下面从表现形式、处理方式、存储形式三个方面来阐述其区别
1. 在字符串前面加上b,就表示bytes数据类型
s1 = "hello"
b1 = b"hello" # 前面加上b让它变成bytes类型
print(s1)
print(b1)
输出
s1 = "hello"
b1 = b"hello" # 前面加上b让它变成bytes类型
print(s1)
print(b1)
2. 字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的。
python3中bytes类型主要用于网络传输和硬盘存储,是以字节为单位处理的
3. 字符串的编码方法只能是Unicode,bytes可以是gbk,utf-8或其他非Unicode形式。bytes类型只负责以二进制字节序列的形式记录信息,至于该二进制序列表示什么信息(比如到底是什么字符)由编码形式决定
python3中对str和bytes做了严格区分,文本总是用str类型表示,编码方式是Unicode,二进制数据则用bytes类型表示。下麦呢来看一段代码
s = "hello中国"
b = s.encode("utf-8")
print(b)
for i in b: # bytes类型也是可迭代对象,是不是很神奇
print(i)
for i in b:
print(bin(i))
输出
b'hello\xe4\xb8\xad\xe5\x9b\xbd'
104
101
108
108
111
228
184
173
229
155
189
0b1101000
0b1100101
0b1101100
0b1101100
0b1101111
0b11100100
0b10111000
0b10101101
0b11100101
0b10011011
0b10111101 Process finished with exit code 0
bytes实际上是一串0和1的组合,但为了在ide环境中让我们相对直观的观察,它被表现成了b'\xe4\xb8\xad\xe6\x96\x87'这种形式,开头的b表示这是一个bytes类型。\xe4是十六进制的表示方式,它占用1个字节的长度。bytes是一种比特流,它的存在形式是01010001110这种。我们无论是在写代码,还是阅读文章的过程中,肯定不会有人直接阅读这种比特流,它必须有一个编码方式,使得它变成有意义的比特流,而不是一堆晦涩难懂的01组合。
字符串有一个encode()方法,与bytes的decode方法相对应,利用这两个方法可以实现字符串与bytes类型的转化
s1 = "hello"
b1 = s1.encode("utf-8")
print(b1)
s2 = b1.decode("utf-8")
print(s2)
输出
b'hello'
hello Process finished with exit code 0
还有一种方法,就是利用调用bytes()类和str()类来完成转化
b1 = bytes(s1, encoding="utf-8")
print(b1)
s2 = str(b1, encoding="utf-8")
print(s2)
输出‘
b'hello'
hello Process finished with exit code 0
实际上,我们知道,所有数据包括字符串,存储到硬盘上都是以0101的形式,也都需要编码解码。关于bytes和str,只需记住这几句话:
(1)在将字符串存入磁盘和从磁盘读取字符串的过程中,Python自动地帮你完成了编码和解码的工作,你不需要关心它的过程;
(2)使用bytes类型,实质上是告诉Python,不需要它帮你自动地完成编码和解码的工作,而是用户自己手动进行,并指定编码格式;
(3)bytes类型主要用于网络传输和硬盘存储
python3 bytes数据类型探讨的更多相关文章
- bytes数据类型和字符串的编码解码,三元运算,进制互换
三元运算 如果这个条件成立就存这个值,如果那个条件成立就存那个值. 进制 bytes类型,字节数据类型也就是二进制类型,这个是python3专有数据类型,在python2里跟字符串是一个类型,也就是p ...
- Python3 基本数据类型注意事项
Python3 基本数据类型 教程转自菜鸟教程:http://www.runoob.com/python3/python3-data-type.html Python中的变量不需要声明.每个变量在使用 ...
- Python3 的数据类型
Python3 的数据类型 整形,浮点型,布尔类型 类型转换 int() 整形 采用截断的方式即向下取整,比如 a=5.5 int (a) 返回值为5 怎样才能使int()按照"四舍五入&q ...
- 三元运算和bytes数据类型笔记
三元运算 result = 值1 if条件 else 值2 如果条件为真:result = 值1 如果条件为假:result = 值2 bytes数据类型 字符串可以编码成字节包,字节包也可以解码成 ...
- Python3 常见数据类型的转换
Python3 常见数据类型的转换 一.数据类型的转换,你只需要将数据类型作为函数名即可 OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16H ...
- 3. Python3 基本数据类型
Python3 基本数据类型 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型& ...
- Python3 bytes 函数
Python3 bytes 函数 Python3 内置函数 描述 bytes 函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列.它是 b ...
- python003 Python3 基本数据类型
Python3 基本数据类型Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建.在 Python 中,变量就是变量,它没有类型,我们所说的"类型&qu ...
- 【Python学习】Python3 基本数据类型
参考学习地址:https://www.runoob.com/python3/python3-data-type.html Python3 基本数据类型 Python 中的变量不需要声明.每个变量在使用 ...
随机推荐
- HR_Hash Tables: Ransom Note
1 题目重点:whole words | case-sensitive #!/bin/python3 import math import os import random import re imp ...
- hdu 3374 String Problem(kmp+最小表示法)
Problem Description Give you a string with length N, you can generate N strings by left shifts. For ...
- 全文检索 -- Solr从概念到实战(一)
全文检索: 将整个文本进行“分词”处理,在索引库中为分词得到的每一个词都建立索引,和用户搜索的关键词进行匹配.实现快速查找效果. 传统sql语句实现的局限性: select song_id,song_ ...
- uWSGI+Nginx安装、配置
1.关闭SELINUX: [root@PYTHON27 /]# vim /etc/selinux/config 将SELINUX=enforcing修改为SELINUX=disabled 2.关闭防火 ...
- Nginx实践篇(2)- Nginx作为静态资源web服务 - 控制浏览器缓存、防盗链
一.控制浏览器缓存 1. 浏览器缓存简介 浏览器缓存遵循HTTP协议定义的缓存机制(如:Expires;Cache-control等). 当浏览器无缓存时,请求响应流程 当浏览器有缓存时,请求响应流程 ...
- OpenLayers学习笔记(五)— 拖拽Feature图层
参考文档的例子可以知道如何拖动矢量图层feature GitHub: 八至 作者:狐狸家的鱼 本文链接:拖拽Feature图层 全部代码 <!DOCTYPE html> <html& ...
- 【CF263D】Cycle in Graph
题目大意:给定一个 N 个点,M 条边的无向图,保证图中每个节点的度数大于等于 K,求图中一条长度至少大于 K 的简单路径,输出长度和路径包含的点. 题解:依旧采用记录父节点的方式进行找环,不过需要记 ...
- TCHAR和CHAR类型的互转,string 转lpcwstr
https://www.cnblogs.com/yuguangyuan/p/5955959.html 没有定义UNICODE,所以它里面的字符串就是简单用" "就行了,创建工程的时 ...
- 对C# .Net4.5异步机制测试
static void Main(string[] args) { Test(); // 这个方法其实是多余的, 本来可以直接写下面的方法 // await GetName() // 但是由于控制台的 ...
- JS怎么判断一个对象是否为空
昨天面试的时候被问到的问题.只怪自己根基不牢,没有回答好 甚至说出了“判断这个obj是否和{}相等”这样鱼蠢的答案(/(ㄒoㄒ)/~~)引用类型怎么可以直接判断==或者===呢?! 今天中秋佳节,宝宝 ...