创建一个位掩码

时间:2013-11-16 15:25:27

标签: python

如何写一个位掩码来删除左边的两个边?

0x010f73696e742d3265745f69676f725f32

应该得到一个结果:

0x73696e742d3265745f69676f725f32

1 个答案:

答案 0 :(得分:0)

如果我计算正确,您需要最后30个十六进制数字(120位)。创建一个位掩码:

Num &= 2**120-1

或采取模数:

Num %= 2**120 # or 16**30

或者如果是可变长度,则计算保存数字所需的字节数:

>>> s=0x010f73696e742d3265745f69676f725f32
>>> hex(s % (256**((s.bit_length()+7) // 8 - 2)))
'0x73696e742d3265745f69676f725f32'
>>> s=0x12345678
>>> hex(s % (256**((s.bit_length()+7) // 8 - 2)))
'0x5678'