Python 的有符号和无符号处理
假设地址 0xFFFFFFFFF,按有符号数来说是 -1,按无符号数来说是 4294967295
在 Python 中,假设 A = -1,如果(A & 0xFFFFFFFFF),最后输出结果是 4294967295
虽然这样是对的,但是对面下面的语句
if old_value < stack[i]:
p.sendline('+' + str(address) + '+' + str(stack[i] - old_value))
else:
p.sendline('+' + str(address) + '-' + str(old_value - stack[i]))
假设old_value = 1
- 如果 stack[i] == -1
,那最后输出 +(1-(-1)) = +2
,最终结果为 1+2=3
- 如果 stack[i] == 4294967295
,那最后输出 +(4294967295-1) = 4294967294
,最终结果为 1+4294967294=4294967295
所以最后结果处理方式应该如下
if stack[i] < 0:
stack[i] = (1<<32) - stack[i]