python的bytes数据类型
bytes主要是用于二进制的数据处理的数据类型,非常适合于socket编程。
bytes
>>> type(b'xxxxx')
<class 'bytes'>>>> type('xxxxx')
<class 'str'>
bytes是byte的序列,而str是unicode的序列。
1、str 转换成 bytes 用 encode() 方法:(注意:这有个坑,str1.encode不加括号和加括号是不一样的,自己试试,初学貌似2.0不影响,3.0变了,不加括号开发环境语法不报错)
str = '人生苦短,我用Python!'
bytes = str.encode()
print(bytes)
输出:
b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'
2、好了,反转换 decode() :
bytes = b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'
str = bytes.decode()
print(str)
输出:
人生苦短,我用Python!
bytearray
1、bytearray和bytes不一样的地方在于,bytearray是可变的。
str = '人生苦短,我用Python!'
bytes = bytearray(str.encode())
bytes = bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
str = bytes.decode()
print(str)
输出:
'人生苦短,我用Python!'
2、改变bytearray
bytes[:6] = bytearray('生命'.encode())
bytes = bytearray(b'\xe7\x94\x9f\xe5\x91\xbd\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
str = bytes.decode()
print(str)
输出:
生命苦短,我用Python!
各种 bytes :
a = bytes('abc', 'utf-8')
print(a)
> b'abc'b = bytes(1)
print(b)
> b'\x00'c = bytes([2,3,6,8])
print(c)
> b'\x02\x03\x06\x08'print(b"Python")
> b'Python'python = (b'P' b'y' b"t" b'o' b'n')
print(python)
> b'Pyton'
Bytes 代表的是(二进制)数字的序列,只不过在是通过 ASCII
编码之后才是我们看到的字符形式,如果我们单独取出一个字节,它仍然是一个数字:
1 |
|
我们可以用 b"*"
的形式创建一个字节类型,前提条件是这里的 *
必须是 ASCII
中可用的字符,否则将会超出限制:
print(b"雨")
> File "", line 1print(b"雨")^
SyntaxError: bytes can only contain ASCII literal characters.
错误提示说明:字节类型只能允许 ASCII 字符(0~127~255)。ASCII
表里面所有的字符只占据了 [31, 127]
那对于这一范围之外的数字我们要怎么才能表示为字节类型?答案就是用特殊的转义符号x
+十六进制数字 :
print(b'xff'[0])
> 255
print(b'x24')
> b'$'
反过来我们也可以将数字(0~255)转变成转义后的字节类型:
print(bytes([24]))
> b'x18'
print(bytes([36,36,36])) # 记住字节类型是一个序列
或者直接从十六进制得来:
print(bytes.fromhex("7b 7d"))
> b'{}'# 逆运算
print(b'{ }'.hex())
> 7b207dint(b' '.hex(), base=16)
> 32
测试的一些代码:
print("$".encode('ascii'))
> b'$'
print("$".encode('ascii')[0])
> 36ba = bytearray(b'hello')
ba[0:1] = b'w'
print(ba)
bytearray(b'wello')
可是如果我们对一些奇怪的字符进行 ASCII
编码,就会发生异常:ordinal not in range(128)
python的bytes数据类型相关推荐
- [转载] 【Python】bytes数据类型
参考链接: Python bytes() bytes函数 python中用file.read()函数读取二进制文件时,得到的数据是<class 'bytes'>类型:如下是一个二进制文件, ...
- Python学习笔记_1_基础_2:数据运算、bytes数据类型、.pyc文件(什么鬼)
Python学习笔记_1_基础_2:数据运算.bytes数据类型..pyc文件(什么鬼) 一.数据运算 Python数据运算感觉和C++,Java没有太大的差异,百度一大堆,这里就不想写了.比较有意思 ...
- 免费视频教程!零基础学Python系列(7) - 数据类型之bytes(上)
本节我们开始讲python数据类型之bytes类型,我们分为上下两个章节. 你可以直接到这个页面观看本节视频:免费视频教程!零基础学Python系列(7) - 数据类型之bytes(上) 以下为对应的 ...
- python基础之数据类型与变量
阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...
- 【Python】Pandas 数据类型概述与转换实战
在进行数据分析时,确保使用正确的数据类型是很重要的,否则我们可能会得到意想不到的结果或甚至是错误结果.对于 pandas 来说,它会在许多情况下自动推断出数据类型 尽管 pandas 已经自我推断的很 ...
- Python str / bytes / unicode 区别详解 - Python零基础入门教程
目录 一.前言 二.Python str / bytes / unicode 区别 1.Python2.x 版本中 str / bytes / unicode 区别 2.Python3.x 版本中 s ...
- Python bytearray/bytes/string区别 - Python零基础入门教程
目录 一.字节与字符的区别 1.字节概念 2.字符概念 3.字符串概念 4.字节串概念 二.str / bytes / bytearray 区别 三.string 与 bytes / bytearra ...
- Python bytearray/bytes/string区别
目录 一.字节与字符的区别 1.字节概念 2.字符概念 3.字符串概念 4.字节串概念 二.str / bytes / bytearray 区别 三.string 与 bytes / bytearra ...
- python定义一个整数变量a_第二篇.1、python基础之数据类型与变量
一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:"变"=>变 ...
- 第三篇:python基础之数据类型与变量
阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...
最新文章
- linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf
- [文章集合] 在Windows Server 2012上关于Vmware的几点
- 《JavaScript模式》精要
- 服务机器人---设计中的仿真
- AI模型变身文豪:“看懂”新闻报道,命名图片更有文采
- Java SE 重点知识笔记
- 1038. 统计同成绩学生(20)
- 蓄水池抽样(Reservoir Sampling)
- VS2008 更改项目名称
- GitHub上下载源代码的方法
- SAP顾问英语自学的免费且有效的方法汇总!--一文搞定英语学习
- 让Yahoo!奇摩害怕的无名小站
- 叉乘点乘混合运算公式_14 导数的运算(四则运算法则、反函数求导、复合函数求导)...
- Cognos函数(六) - total的使用
- LeetCode 285. 二叉搜索树中的中序后继
- stm32f105移植到gd32f305笔记
- STM32任意IO模拟8080时序驱动TFTLCD屏
- matlab gui invalid handle无效axes guidat handles等等
- Topical PageRank(TPR)论文解读
- ADB 命令结合 monkey 的简单使用,超详细
热门文章
- SQL 事务 begin tran、commit tran、rollback tran 的用法
- 这款打怪升级的小游戏,7 年前出生于 GitHub 社区,如今在谷歌商店有 8 万人打了满分
- s3c2440的时钟体系
- Hexo 关闭文章评论
- Spring Boot在使用Gradle build命令卡住不动了
- 机器学习之主成分分析PCA数据降维
- 计算机配置显示器,ControlMyMonitor(电脑显示器配置工具)
- 7-4 新浪微博热门话题 (20 分) 新浪微博可以在发言中嵌入“话题”,即将发言中的话题文字写在一对“#”之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话题。新浪微博还
- java debug命令_Mame DEBUG调试命令详细指令速查大全
- art-高光贴图制作