Python处理字节(bytes bytearray)
文章目录
- 0. 前言
- 1. 数据类型
- 2. 类型转换
- 3. 常用接口
0. 前言
在了解到python
的灵活性之后,一些之前采用C++
去做的内容现在都耐不住想往python
转。
手上有一个串口传感器需要读写数据,于是学习一下python
中处理字节的有关接口。
本文主要参考官方文档:Binary Sequence Types
1. 数据类型
处理字节的数据类型主要有bytes
和bytearray
,这二者都是python
的内置类型,区别在于前者是不可变序列,后者可变(类似于tuple
与list
的关系)。
出于灵活性考虑使用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()
函数没找到返回-1
,index()
函数没找到将报错。
❗️❗️❗️ 所有传入的参数不能是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)相关推荐
- python中byte类型_详解python string类型 bytes类型 bytearray类型
搜索热词 一.python3对文本和二进制数据做了区分.文本是Unicode编码,str类型,用于显示.二进制类型是bytes类型,用于存储和传输.bytes是byte的序列,而str是unicode ...
- Python 之 bytes/bytearray 的深入浅出
Python 之 bytes/bytearray 的深入浅出 1.前言 1.1 Python3 引入两个新类型 1.2 ASCII 1.3 字符串与`bytes bytearray` 1.4 编码与解 ...
- python:二进制序列类型 --- bytes, bytearray
python:二进制序列类型 --- bytes, bytearray bytes 对象 bytearray 对象 bytes 和 bytearray 操作 操作二进制数据的核心内置类型是 bytes ...
- Python中的bytes与bytearray详解
Python3引入两个新类型 bytes:不可变的字节序列 bytearray:可变的字节数组 字符与byts的区别: 字符串是字符组成的有序序列,字符可以使用编码来理解 bytes是字节组成的有序的 ...
- pythonbyte连接_Python3之字节串bytes与字节数组bytearray的使用详解
字节串bytes 字节串也叫字节序列,是不可变的序列,存储以字节为单位的数据 字节串表示方法: b"ABCD" b"\x41\x42" ... 字节串的构造函数 ...
- 【python】将bytes转换为float* 每四字节转化为float
[python]将bytes转换为float* 每四字节转化为float FEATURE_SIZE = 256 def Bytes2Float32String(feature):x = "& ...
- python3 str bytes bytearray 互相转换
在一次aes解密中,我完全弄混了str.bytes.bytearray,结果导致解密的结果不正确.在这里记录一下三者的区别和相互转化的方法. 首先str是采用Unicode编码方式的序列,主要用于显示 ...
- 字节(bytes) 二进制序列类型
字节的表示方法 单引号 b'still allows embedded "double" quotes' 双引号: b"still allows embedded 'si ...
- python 使用字节流bytes格式读取文件转为int格式,再转为0,1字符串格式
python 使用字节流bytes格式读取文件转为int格式,再转为0,1字符串格式 with open('test.jpg', 'rb') as src:t = src.read(1) # 读进1B ...
最新文章
- GitHub开源的10个超棒后台管理面板
- C#和Sql Server 2005中时间的最大值和最小值
- swoole 异步MYSQL
- [PHP] 深度解析Nginx下的PHP框架路由实现
- 索引中丢失 IN 或 OUT 参数
- my batis plus 小数没有0_Excel中的数据去掉小数点,教你3个函数解决!
- AT2305-[AGC010D]Decrementing【博弈论】
- Qt下libusb-win32的使用(一)打印设备描述符
- HTML表格的简单使用1
- 浅谈PHP面向对象编程(五)
- 怎样打开.jar格式文件,怎样运行.jar格式文件
- Mac WebStorm 破解
- 离线光学字符识别(OCR)技术简介
- 用ENSP配置ospf
- SpringBoot测试:pom文件版本重复和不一致导致的问题xxxConfigurationPropertySource和Assert.state(ZLjava/util/function/Supp
- 音视频又贵又卡还不够炫?云原生的华为云视频云服务带你重塑新体验
- EasyRecovery2023重新找回丢失的文件数据恢复软件
- 命令查看linux版本,linux基础之教你如何查看linux版本
- MOSS同步AD账户(三)
- LoRa亿佰特 E22-400T22S 临时寄存器和无线配置的详细解释
热门文章
- Word2003取消首字母大写方法
- 安卓手机重启日志_安卓手机系统一直不升级会怎么样?
- .NET Core 1.0学习(3)-做了个靠谱点的docker image)
- Android 系统获取 CPU 电压
- js数组方法-改变原数组和不改变原数组的方法整理
- java 代码打开jar文件_Java基础之用记事本编辑java代码运行,并且打成jar包后运行...
- 斗牛怎么玩法算法_逗牛牧场:斗牛游戏小程序,益智斗牛小游戏
- html画圆属性,html 5画圆
- python定义数组的方法_Python数组定义方法详细介绍
- mysql从当前日期获取工作日的命令_从MySQL中具有DATE记录的列获取每月的第N个工作日...