z3py将int转换为bitvec时出错

z3py将int转换为bitvec时出错,z3,z3py,Z3,Z3py,从中,我尝试使用 x = Int('x') reg = BitVecRef(Z3_mk_int2bv(BitVecVal(x.ctx_ref(), 16, x)), x.ctx) 但我总是得到一个错误,说“Ast”对象没有属性“ref”,似乎这个函数只能将integer转换为bitvec,有没有其他方法将Int转换为bitvec 我也知道这个函数现在被认为是不奇怪的,我需要重新编译我的本地版本吗 提前谢谢 您建议的代码首先尝试将x转换为位向量值BitVecVal,即实际数字,但x不是值数字。正

从中,我尝试使用

x = Int('x')
reg = BitVecRef(Z3_mk_int2bv(BitVecVal(x.ctx_ref(), 16, x)), x.ctx)
但我总是得到一个错误,说“Ast”对象没有属性“ref”,似乎这个函数只能将integer转换为bitvec,有没有其他方法将Int转换为bitvec

我也知道这个函数现在被认为是不奇怪的,我需要重新编译我的本地版本吗


提前谢谢

您建议的代码首先尝试将x转换为位向量值BitVecVal,即实际数字,但x不是值数字。正确的表达式可以构造如下:

x = Int('x')
raw = Z3_mk_int2bv(x.ctx_ref(), 16, x.as_ast())
reg = BitVecRef(raw, x.ctx)
print reg
int2bv传播修复程序是在上一个Z3发行版之前很久添加的,因此如果您使用的版本还不到一年,您不必重新编译任何内容