文章目录

  • 0. 前言
  • 1. 数据类型
  • 2. 类型转换
  • 3. 常用接口

0. 前言

在了解到python的灵活性之后,一些之前采用C++去做的内容现在都耐不住想往python转。

手上有一个串口传感器需要读写数据,于是学习一下python中处理字节的有关接口。

本文主要参考官方文档:Binary Sequence Types


1. 数据类型

处理字节的数据类型主要有bytesbytearray,这二者都是python的内置类型,区别在于前者是不可变序列,后者可变(类似于tuplelist的关系)。

出于灵活性考虑使用bytearray会更多一些,本文的例子也主要以bytearray为主。

要创建一个bytearray,可以通过构造函数,也可以通过字面量b'abc'创建,字面量默认为bytes类型:

b = bytes(10) # 创建大小为10,全部填0
b = bytes(range(10)) # 1-10b = b'123'
ba = bytearray(b'123')
print(b)    # b'abc'
print(ba)   # bytearray(b'abcd')

2. 类型转换

常用当属转成int了,可以直接取[]索引取出单个字节得到int值:

a = b'abc'[0] # 97

也可以将bytearray转换成list得到一个int型数组:

arr = list(b'abc') # [97, 98, 99]

还可以通过int.frombyte()函数,将一个bytes整体转成int

m = b'\xa0\x86\x01\x00'
a = int.from_bytes(m, byteorder='little', signed=True)
print(a) # 10000

int转回bytes用到int.to_bytes()函数,指定字节数、字节序(大小端)、是否有符号:

a = 100000
m = a.to_bytes(4, byteorder='little', signed=True)
print(m)  # b'\xa0\x86\x01\x00'

需要注意:字节数必须能够表示该整数,如a=10000时,指定字节数为1将产生错误。


3. 常用接口

首先,当然是查看十六进制数据具体值,可以使用hex()函数,将返回一个字符串,每个字节由2个十六进制位组成:

b'\xf0\xf1\xf2'.hex() # 'f0f1f2'# 也可以从16进制字符串转成bytes,将忽略所有空白部分
bytes.fromhex('2Ef0 F1f2  ') # b'.\xf0\xf1\xf2'

查找函数主要有find()、rfind()index()、rindex()r开头表示从后往前查找。find()函数没找到返回-1index()函数没找到将报错

❗️❗️❗️ 所有传入的参数不能是str字符串(如'abc'),依旧需要用b'abc'的形式;

拼接、截取可通过+和切片实现:

a = b'123456'
b = a[1:]              # b == b'23456'
c = b'abc' + a  # c == b'abc123456'

还有很多方便的接口,不具体展开,需要使用的时候再去这里看文档即可:

  • 替换:replace()
  • 判断前缀后缀:startswith()、endswith()
  • 分割:split()
  • 从头尾移除特定字符:strip,默认移除空白,如传入b'abc'可以删除前后所有abc的任意组合;
  • 是否只有数字:isalnum(),可以为空
  • 是否是数字:isdigit(),不能为空
  • 是否只有字母:isalpha()
  • 是否只有ascii字符:isascii(),每个字节取值都在[0, 0x7F]
  • 大小写判断:islower()、isupper(),不能为空
  • 大小写化:lower()、upper()
  • 标题判断和标题化:istitle()、title(),判断或转成Hello World的形式

如有错误欢迎指正,共同进步~


今天你学废了吗?

Python处理字节(bytes bytearray)相关推荐

  1. python中byte类型_详解python string类型 bytes类型 bytearray类型

    搜索热词 一.python3对文本和二进制数据做了区分.文本是Unicode编码,str类型,用于显示.二进制类型是bytes类型,用于存储和传输.bytes是byte的序列,而str是unicode ...

  2. Python 之 bytes/bytearray 的深入浅出

    Python 之 bytes/bytearray 的深入浅出 1.前言 1.1 Python3 引入两个新类型 1.2 ASCII 1.3 字符串与`bytes bytearray` 1.4 编码与解 ...

  3. python:二进制序列类型 --- bytes, bytearray

    python:二进制序列类型 --- bytes, bytearray bytes 对象 bytearray 对象 bytes 和 bytearray 操作 操作二进制数据的核心内置类型是 bytes ...

  4. Python中的bytes与bytearray详解

    Python3引入两个新类型 bytes:不可变的字节序列 bytearray:可变的字节数组 字符与byts的区别: 字符串是字符组成的有序序列,字符可以使用编码来理解 bytes是字节组成的有序的 ...

  5. pythonbyte连接_Python3之字节串bytes与字节数组bytearray的使用详解

    字节串bytes 字节串也叫字节序列,是不可变的序列,存储以字节为单位的数据 字节串表示方法: b"ABCD" b"\x41\x42" ... 字节串的构造函数 ...

  6. 【python】将bytes转换为float* 每四字节转化为float

    [python]将bytes转换为float* 每四字节转化为float FEATURE_SIZE = 256 def Bytes2Float32String(feature):x = "& ...

  7. python3 str bytes bytearray 互相转换

    在一次aes解密中,我完全弄混了str.bytes.bytearray,结果导致解密的结果不正确.在这里记录一下三者的区别和相互转化的方法. 首先str是采用Unicode编码方式的序列,主要用于显示 ...

  8. 字节(bytes) 二进制序列类型

    字节的表示方法 单引号 b'still allows embedded "double" quotes' 双引号: b"still allows embedded 'si ...

  9. python 使用字节流bytes格式读取文件转为int格式,再转为0,1字符串格式

    python 使用字节流bytes格式读取文件转为int格式,再转为0,1字符串格式 with open('test.jpg', 'rb') as src:t = src.read(1) # 读进1B ...

最新文章

  1. GitHub开源的10个超棒后台管理面板
  2. C#和Sql Server 2005中时间的最大值和最小值
  3. swoole 异步MYSQL
  4. [PHP] 深度解析Nginx下的PHP框架路由实现
  5. 索引中丢失 IN 或 OUT 参数
  6. my batis plus 小数没有0_Excel中的数据去掉小数点,教你3个函数解决!
  7. AT2305-[AGC010D]Decrementing【博弈论】
  8. Qt下libusb-win32的使用(一)打印设备描述符
  9. HTML表格的简单使用1
  10. 浅谈PHP面向对象编程(五)
  11. 怎样打开.jar格式文件,怎样运行.jar格式文件
  12. Mac WebStorm 破解
  13. 离线光学字符识别(OCR)技术简介
  14. 用ENSP配置ospf
  15. SpringBoot测试:pom文件版本重复和不一致导致的问题xxxConfigurationPropertySource和Assert.state(ZLjava/util/function/Supp
  16. 音视频又贵又卡还不够炫?云原生的华为云视频云服务带你重塑新体验
  17. EasyRecovery2023重新找回丢失的文件数据恢复软件
  18. 命令查看linux版本,linux基础之教你如何查看linux版本
  19. MOSS同步AD账户(三)
  20. LoRa亿佰特 E22-400T22S 临时寄存器和无线配置的详细解释

热门文章

  1. Word2003取消首字母大写方法
  2. 安卓手机重启日志_安卓手机系统一直不升级会怎么样?
  3. .NET Core 1.0学习(3)-做了个靠谱点的docker image)
  4. Android 系统获取 CPU 电压
  5. js数组方法-改变原数组和不改变原数组的方法整理
  6. java 代码打开jar文件_Java基础之用记事本编辑java代码运行,并且打成jar包后运行...
  7. 斗牛怎么玩法算法_逗牛牧场:斗牛游戏小程序,益智斗牛小游戏
  8. html画圆属性,html 5画圆
  9. python定义数组的方法_Python数组定义方法详细介绍
  10. mysql从当前日期获取工作日的命令_从MySQL中具有DATE记录的列获取每月的第N个工作日...