如何写一个位掩码来删除左边的两个边?
0x010f73696e742d3265745f69676f725f32
应该得到一个结果:
0x73696e742d3265745f69676f725f32
答案 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'