我试图提取一个整数,它在一个2字节(16位)的消息中占据12位,这是一种big-endian格式。我已经做了一些研究,并希望我将不得不使用位操作(位移位)来实现这一点,但我不确定如何将其应用于big-endian格式
这里有几个答案使用了python'Numpy'包,但我在Micropython上没有访问该包的权限。我确实可以访问“ucruct”模块,我使用它来解压缩消息的某些其他部分,但它似乎只适用于8位、16位和32位消息
到目前为止,我唯一想到的是:
int12 = (byte1 << 4) + (byte2)
expected_value = int.from_bytes(int12)
但这并没有给我我期望的数字。例如0x02,0x15
应该表示十进制533。
我哪里做错了
我是位操作和从字节中提取数据的新手,因此非常感谢您的帮助,谢谢
这应该起作用:
给出:
但是,您应该检查16位中有哪些12位被占用。我以前的代码假设这些是上面的3个半字节。如果数字占用较低的3个半字节,则不需要任何移位,只需使用
0xFFF
的掩码即可相关问题 更多 >
编程相关推荐