在Z3 Python中,要提取BitVector V的8位,我们可以执行以下操作:
Extract(7, 0, V)
但是,有时在我的程序中,V可以是常量,所以在这种情况下代码就像:
Extract(7, 0, 0x87654)
遗憾的是,这是错误的,因为上面的代码没有指定0x87654是32位BitVector.7。
一种解决方案是创建一个临时变量,例如:
tmp = BitVec('tmp', 32)
tmp == 0x87654
Extract(7, 0, tmp)
然而,这有点麻烦,因为我必须为此创建一个临时工作。我想知道是否有另一种方法而不必创建临时变量?有没有办法在我的代码中将0x87654内联到BitVector内联?
非常感谢。
答案 0 :(得分:3)
我认为你想使用BitVecVal(value, bits)
:
Extract(7, 0, BitVecVal(0x87654, 32))
以下是API说明:http://research.microsoft.com/en-us/um/redmond/projects/z3/z3.html#-BitVecVal