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", line 28, in fnv_1a return ensure_bits_count((hash_value ^ byte) * PRIMES[bits], bits) TypeError: unsupported operand type(s) ) ^: '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 に答える