我有一个模块,它采用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,48.
从来没有在脚本中使用二进制,所以有点新.
干杯
要获得前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)
| 归档时间: |
|
| 查看次数: |
6523 次 |
| 最近记录: |