假设我说这个例子(来自java混淆)有一个高度溢出的移位值
x = buffer[count + -3] << 0x8f553768 & 0xff00
从尝试我想出来..
8 = 0x ff 00
16 = 0x ff 00 00
24 = 0x ff 00 00 00
我很反感,看起来像这样。
x = ((buffer[coint - 3] << 8) & 0xff)
我的大部分工作就像将[+ -]
翻转到[- +]
所有这一切都很容易解决。
但这些转变确实让我很难过。
我发现了一种在值上使用AND的技巧
0x8f553768 & 31
给出了8
等的正确答案。
然后我将0xff00
转换为等效的无符号字节.. 0xff
我的问题是如何将位掩码降低到适当的值..比如说这个例子
i1 << 0xf7c13d2a & 0xfc00 //Aka 0xf7c13d2a & 31 == 10
我得到了......
i1 << 10 & 0xfc00
如何将0xfc00
降低到适当的值?
我看了guess
应该是这样的
i1 << 10 & 0x3f
但是公式是什么来降低AND
值?
答案 0 :(得分:1)
i1 << 10 & 0xfc00
然后你做
0xfc00 >> 10
,它会为您提供0x3f