作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个模块,它采用十进制格式的 2 X 8 位数字,具有特定的结构
每个数字必须以相同的 4 位开头 = 0011接下来是一个 8 位变量后跟忽略的 4 位,因此设置为 0000
所以计算16位数字就足够简单了
变量 number * 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
要获得最后 8 位,用 0b11111111
屏蔽它,即 255
。
0011000100110000
& 0000000011111111
-------------------
0000000000110000
代码示例:
>>> n = int("0011000100110000", 2)
>>> n
12592
>>> n >> 8, n & 255
(49, 48)
或者,您也可以只使用 divmod
,但是 >>>
和 &
似乎更快一些。
>>> divmod(n, 256)
(49, 48)
关于python - 在 Python 中使用二进制,拆分数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29177035/
我是一名优秀的程序员,十分优秀!