字节数组bytearray按位解析的另种方法。

本文详细解释了Python中字节数组的位运算和逻辑运算,展示了如何使用int.from_bytes和struct.pack处理不同类型的数值。同时介绍了如何获取字节中单个位的布尔值。此外,还分享了一套完整的Python开发学习资料,覆盖零基础到进阶,旨在帮助开发者高效学习和成长。
摘要由CSDN通过智能技术生成

1.3= False
1.4= False
1.5= False
1.6= False
1.7= False
2.0= False
2.1= True
2.2= True
2.3= True
2.4= True
2.5= True
2.6= True
2.7= False
3.0= True
3.1= True
3.2= True
3.3= True
3.4= False
3.5= False
3.6= False
3.7= False

在这段代码中,首先创建了一个字节数组 byt,内容为 b'\x00\x00\x7e\x0f',然后通过一系列位运算和逻辑运算,获取了字节数组中各个位的值,并将其转换为布尔类型。最后使用循环打印了字节数组中每一个位的布尔值。

逐步解释这段代码的执行过程:

  1. byt = bytearray(b'\x00\x00\x7e\x0f'):创建了一个长度为4的字节数组 byt,内容为十六进制 00 00 7e 0f 对应的字节串。

  2. 通过一系列类似的操作,获取了字节数组中各个位的值,并将其转换为布尔类型。例如,one 获取字节中第一个位的值,two 获取第二位的值,依次类推。

  3. for i in range(32)::循环遍历了0到31的整数。

  4. a=bool.\_\_bool\_\_(byt.\_\_getitem\_\_(i//8)>>i%8 & 0b1):对于每一位,通过位运算和逻辑运算获取其值,并转换为布尔类型。i//8 表示字节的索引(0到3),i%8 表示位在字节中的偏移量(0到7)。

byt = bytearray(b'\xff\x00\x7e\x0f')
a=int.from_bytes(byt[2:3], 'big',signed=False)
b=int.from_bytes(byt[2:4],byteorder='big',signed=False)
c=int.from_bytes(byt,byteorder='big',signed=True)
print(a,b,c)


输出:126 32271 -16744945

int.from\_bytes() 方法中,signed 参数用于指定是否将解释的字节序列作为有符号整数解释。如果 signed=True,则解释的整数将被视为有符号整数,即可以表示正数和负数;如果 signed=False,则解释的整数将被视为无符号整数,只能表示非负数。

举个例子,如果我们有一个字节序列 b'\xFF',按照 big-endian 字节顺序解释,如果 signed=True,那么这个字节序列将被解释为有符号整数 -1;如果 signed=False,那么这个字节序列将被解释为无符号整数 255

在使用 int.from\_bytes() 方法时,根据您的需求来选择 signed 参数的取值,以确保正确地解释字节序列为有符号或无符号整数。

还有就是python中不像C,C#那样分的非常细,右uint ,sint ,lint 等来表示字节长度。python中我们可以用索引来拿确定长度。前提是你要知道你要的数据在哪几个字节里面。

3.float

要将浮点数转换为字节数组,可以使用 struct 模块中的 pack 函数。struct.pack() 函数可以将数据按照指定的格式转换为字节序列。

下面是一个示例代码,演示如何将浮点数转换为字节数组:

 import struct


# 定义一个浮点数  
 f = 3.14159


# 使用 struct.pack() 将浮点数转换为字节数组  
 byte\_array = struct.pack('d', f)  # 'd' 表示双精度浮点数类型


print(byte\_array)  

在上面的示例中,f 是一个浮点数,struct.pack('d', f) 将浮点数 f 转换为字节数组。在 struct.pack() 中,'d' 表示双精度浮点数类型。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值