2

我正在尝试在 python-3.6 上使用 fnv 哈希函数,但出现错误

回溯(最后一次调用):文件“C:/Users/SACHIN/AppData/Local/Programs/Python/Python36/bloom.py”,第 4 行,模块 fnv.hash(data, algorithm=fnv.fnv_1a, bits =64) 文件“C:\Users\SACHIN\AppData\Local\Programs\Python\Python36\lib\site-packages\fnv__init__.py”,第 52 行,哈希 OFFSET_BASIS[bits] 文件“C:\Users\SACHIN \AppData\Local\Programs\Python\Python36\lib\site-packages\fnv__init__.py",第 28 行,在 fnv_1a 返回 ensure_bits_count((hash_value ^ byte) * PRIMES[bits], bits) TypeError: 不支持的操作数类型) for ^: 'int' 和 'str'

对于代码

import fnv

data = 'my data'
fnv.hash(data, algorithm=fnv.fnv_1a, bits=64)
fnv.hash(data, bits=64)
fnv.hash(data, algorithm=fnv.fnv, bits=64)

这完全是从https://pypi.python.org/pypi/fnv/0.2.0复制的

请让我知道实际上出了什么问题。

4

1 回答 1

2

今天刚遇到这个错误。我通过对字符串进行编码来解决它。例如,以下应该都可以工作。

import fnv

data = 'my data'
fnv.hash(data.encode(), algorithm=fnv.fnv_1a, bits=64)
fnv.hash(data.encode('ascii'), bits=64)
fnv.hash(data.encode('utf-8'), algorithm=fnv.fnv, bits=64)
于 2019-10-14T17:45:21.330 回答