嘿伙计们,我遇到了一个问题,我希望有人能帮助我搞清楚!
我有一个十六进制数字=的字符串,'0x00000000'这意味着:
0x01000000 = apple
0x00010000 = orange
0x00000100 = banana
Run Code Online (Sandbox Code Playgroud)
所有这些组合都是可能的.即0x01010000 = apple & orange
我如何从我的字符串中确定它是什么水果?我制作了一本包含所有组合的字典,然后与之比较,它有效!但我想知道一个更好的方法.
Adr*_*son 14
通过使用int()内置函数并指定基数,将字符串转换为整数:
>>> int('0x01010000',16)
16842752
Run Code Online (Sandbox Code Playgroud)
现在,您有一个表示bitset的标准整数.使用&,|以及任何其他按位运算符来测试各个位.
>>> value = int('0x01010000',16)
>>> apple = 0x01000000
>>> orange = 0x00010000
>>> banana = 0x00000100
>>> bool(value & apple) # tests if apple is part of the value
True
>>> value |= banana # adds the banana flag to the value
>>> value &= ~orange # removes the orange flag from the value
Run Code Online (Sandbox Code Playgroud)
现在,如果您需要转换回您的字符串:
>>> hex(value)
'0x1000100'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36157 次 |
| 最近记录: |