在Python中使用二进制文件,拆分数字

Dev*_*WAH 4 python binary

我有一个模块,它采用Decimal格式的2 X 8bit数字,具有特定的结构

每个数字必须以相同的4位= 0011开始,然后是变量8位,然后是4位被忽略,因此设置为0000

所以计算16位数是很简单的

变量数*16将它向左移4位,添加12288 = 0011 | 000000000000将得到所需的结果.

所以如果我的输入数字是19例如

19 X 16 + 12288 = 12592 = 0011000100110000

下一步是将其拆分为两个X 8位数

00110001 | 00110000 = 49,48

如何在python中有效地从12592到49,4​​8.

从来没有在脚本中使用二进制,所以有点新.

干杯

tob*_*s_k 8

要获得前8位,只需将其向右移8位.

   0011000100110000 >> 8
==         00110001
Run Code Online (Sandbox Code Playgroud)

要获得最后8位,请将其屏蔽0b11111111,即255.

   0011000100110000
&  0000000011111111
-------------------
   0000000000110000
Run Code Online (Sandbox Code Playgroud)

代码示例:

>>> n = int("0011000100110000", 2)
>>> n
12592
>>> n >> 8, n & 255
(49, 48)
Run Code Online (Sandbox Code Playgroud)

或者,您也可以只使用divmod,但>>&似乎有点快.

>>> divmod(n, 256)
(49, 48)
Run Code Online (Sandbox Code Playgroud)