Z3 bitvecs 到 Int 并返回
Z3 bitvecs to Int and back
我有以下代码:
from z3 import *
a0 = Int('a0')
a1 = Int('a1')
a2 = Int('a2')
v1 = BitVec('v1',32)
s.add(v1 == ((a0 + a1) >> 31) >> 30)
s.add(((v1 + a2) & 3) - v1 == 1)
现在我收到以下错误:
TypeError: unsupported operand type(s) for >>: 'ArithRef' and 'int'
我明白这个问题,z3 不能像原生 python 那样处理隐式转换(即 45 >> 3
直接转换为 5
)。但是,我需要我的变量 a_i
是整数。有办法实现吗?
我有以下代码:
from z3 import *
a0 = Int('a0')
a1 = Int('a1')
a2 = Int('a2')
v1 = BitVec('v1',32)
s.add(v1 == ((a0 + a1) >> 31) >> 30)
s.add(((v1 + a2) & 3) - v1 == 1)
现在我收到以下错误:
TypeError: unsupported operand type(s) for >>: 'ArithRef' and 'int'
我明白这个问题,z3 不能像原生 python 那样处理隐式转换(即 45 >> 3
直接转换为 5
)。但是,我需要我的变量 a_i
是整数。有办法实现吗?