在获取fuzzy_compare函数以返回正确的比较值时遇到问题。它应该返回0~100,但始终返回0。在
from ctypes import *
fuzzy = CDLL('fuzzy.dll')
out1 = create_string_buffer('\x00'*512)
out2 = create_string_buffer('\x00'*512)
print fuzzy.fuzzy_hash_buf('hashme', len('hashme'), out1)
print fuzzy.fuzzy_hash_buf('hashme2', len('hashme2'), out2)
print out1.value
print out2.value
print fuzzy.fuzzy_compare(out1, out2)
# output
# 0
# 0
# 3:cA:x <-- correct hash
# 3:cy:R <-- correct hash
# 0 <-- fuzzy_compare returning 0...
我尝试过用out1.value调用fuzzy compare,将其转换为c\u char_p()和create_string_buffer(),但它始终返回0。我在调试器中看过它(在fuzzy_compare函数上设置一个bp,它正确地传递值,我不知道它为什么总是返回0。我是不是用错了函数?在
我编译了包含的
sample.c
,它似乎可以工作。所以我在Python中尝试了类似的方法。注意,它使用一个非常大的输入缓冲区(0x50000),并且只修改16个字节,得到了99个非常接近的匹配。在输出:
^{pr2}$相关问题 更多 >
编程相关推荐