z3py:如何在python数学函数中转换bitvec?

时间:2016-05-11 10:46:41

标签: z3py

我想计算一下bitvec实际使用的长度。例如,我们有一个类似00101100的bitvec,实际使用的长度是最右边1的位置。无论如何,我在z3py中有一个代码如下:

from z3 import *
import math
def length(t):
return int(math.ceil(math.log(t,2)))

好吧,如果我使用整数作为输入,这根本不是问题,因为事实上这是一个纯python代码。如果我使用

x = BitVecVal(31,8) 
print length(x)

然后,我遇到了一个问题,因为实例没有属性 float 。我尝试过z3_mk_bv2int或ToInt()。但它们都没有奏效。

请帮我解决,或z3py中不允许。

1 个答案:

答案 0 :(得分:0)

我不确定这是“官方”方式,但你可以获得字符串表示然后将其解析为整数:

postAsync.delegate = this