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

print(b"Python"[0])<br>> 80

我们可以用 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数据类型相关推荐

  1. [转载] 【Python】bytes数据类型

    参考链接: Python bytes() bytes函数 python中用file.read()函数读取二进制文件时,得到的数据是<class 'bytes'>类型:如下是一个二进制文件, ...

  2. Python学习笔记_1_基础_2:数据运算、bytes数据类型、.pyc文件(什么鬼)

    Python学习笔记_1_基础_2:数据运算.bytes数据类型..pyc文件(什么鬼) 一.数据运算 Python数据运算感觉和C++,Java没有太大的差异,百度一大堆,这里就不想写了.比较有意思 ...

  3. 免费视频教程!零基础学Python系列(7) - 数据类型之bytes(上)

    本节我们开始讲python数据类型之bytes类型,我们分为上下两个章节. 你可以直接到这个页面观看本节视频:免费视频教程!零基础学Python系列(7) - 数据类型之bytes(上) 以下为对应的 ...

  4. python基础之数据类型与变量

    阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...

  5. 【Python】Pandas 数据类型概述与转换实战

    在进行数据分析时,确保使用正确的数据类型是很重要的,否则我们可能会得到意想不到的结果或甚至是错误结果.对于 pandas 来说,它会在许多情况下自动推断出数据类型 尽管 pandas 已经自我推断的很 ...

  6. Python str / bytes / unicode 区别详解 - Python零基础入门教程

    目录 一.前言 二.Python str / bytes / unicode 区别 1.Python2.x 版本中 str / bytes / unicode 区别 2.Python3.x 版本中 s ...

  7. Python bytearray/bytes/string区别 - Python零基础入门教程

    目录 一.字节与字符的区别 1.字节概念 2.字符概念 3.字符串概念 4.字节串概念 二.str / bytes / bytearray 区别 三.string 与 bytes / bytearra ...

  8. Python bytearray/bytes/string区别

    目录 一.字节与字符的区别 1.字节概念 2.字符概念 3.字符串概念 4.字节串概念 二.str / bytes / bytearray 区别 三.string 与 bytes / bytearra ...

  9. python定义一个整数变量a_第二篇.1、python基础之数据类型与变量

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:"变"=>变 ...

  10. 第三篇:python基础之数据类型与变量

    阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...

最新文章

  1. linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf
  2. [文章集合] 在Windows Server 2012上关于Vmware的几点
  3. 《JavaScript模式》精要
  4. 服务机器人---设计中的仿真
  5. AI模型变身文豪:“看懂”新闻报道,命名图片更有文采
  6. Java SE 重点知识笔记
  7. 1038. 统计同成绩学生(20)
  8. 蓄水池抽样(Reservoir Sampling)
  9. VS2008 更改项目名称
  10. GitHub上下载源代码的方法
  11. SAP顾问英语自学的免费且有效的方法汇总!--一文搞定英语学习
  12. 让Yahoo!奇摩害怕的无名小站
  13. 叉乘点乘混合运算公式_14 导数的运算(四则运算法则、反函数求导、复合函数求导)...
  14. Cognos函数(六) - total的使用
  15. LeetCode 285. 二叉搜索树中的中序后继
  16. stm32f105移植到gd32f305笔记
  17. STM32任意IO模拟8080时序驱动TFTLCD屏
  18. matlab gui invalid handle无效axes guidat handles等等
  19. Topical PageRank(TPR)论文解读
  20. ADB 命令结合 monkey 的简单使用,超详细

热门文章

  1. SQL 事务 begin tran、commit tran、rollback tran 的用法
  2. 这款打怪升级的小游戏,7 年前出生于 GitHub 社区,如今在谷歌商店有 8 万人打了满分
  3. s3c2440的时钟体系
  4. Hexo 关闭文章评论
  5. Spring Boot在使用Gradle build命令卡住不动了
  6. 机器学习之主成分分析PCA数据降维
  7. 计算机配置显示器,ControlMyMonitor(电脑显示器配置工具)
  8. 7-4 新浪微博热门话题 (20 分) 新浪微博可以在发言中嵌入“话题”,即将发言中的话题文字写在一对“#”之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话题。新浪微博还
  9. java debug命令_Mame DEBUG调试命令详细指令速查大全
  10. art-高光贴图制作