我有一个长度为6字节(48位)的字节数组。只有每个字节的前六位是相关的。高两位不包含数据,因此应忽略它们。在转换为数字时,不应包含它们
我想从字节数组中提取一个特定范围的位,并将其转换为一个数字,同时忽略每个字节的两个高位
例如
以下面的字节数组为例:b'\x12\x08\x1c\x30\x32\x21'
第47位->;00010010 000010000110000110000 00110010 00100001<;-第0位
如果我想要位0到15的值。答案应该是3233(1+32+128+1024+2048)
00010010 00001000 00011100 00110000 00110010 00100001
^^^^ XX^^^^^^ XX^^^^^^
如果我想要第6位到第12位的值。它应该是50(2+16+32)
00010010 00001000 00011100 00110000 00110010 00100001
^ XX^^^^^^ XX
我可以在脑子里笨拙地做这件事,但我在用Python写下来时遇到了问题。这些是我认为我应该做的步骤,但我不确定这是否是最好/最简单的方法,也不确定我应该如何做
……所以
一,。如何将字节数组转换为48位二进制字符串?
2.是否有一种简单的方法可以将二进制字符串中的每七位和每八位更改为“-”?
5.将包含二进制值的字符串转换为数字
…我的思维过程对这有什么好处,或者有没有更简单的方法来实现这一点
我真的很感谢你在这方面的帮助
[编辑]我想我的问题中第3步和第4步的顺序不对。。。在提取二进制数字之前,我想删除不需要的位。问题经相应编辑。[/编辑]
这就是你要找的吗
输出:
'0b10010001000011100110000110010100001'
这就是我想到的
如果我正确理解您的要求,您可以尝试以下方式:
test.py:
测试:
相关问题 更多 >
编程相关推荐