gpt4 book ai didi

python - FNV1A_64 不匹配

转载 作者:行者123 更新时间:2023-11-29 04:01:57 24 4
gpt4 key购买 nike

我正在尝试 3 种不同的 FNV1A_64 哈希实现。

1) Maatkit

SELECT FNV1A_64('1')

结果:-5808609649712063748

2) pyhash

import pyhash
hasher = pyhash.fnv1a_64()
print hasher('1')

结果:53876069782339L

3) fnv

./fnv1a64 -s 1

结果:0xaf63ac4c86019afc(12638134423997487000 十进制)

为什么所有的结果都不一样?

最佳答案

MySQL 和命令行程序给出了相同的结果。一个只打印一个带符号的数字,另一个打印相同数字的十六进制表示。

>>> import struct
>>> struct.pack('q', -5808609649712063748)
'\xfc\x9a\x01\x86L\xacc\xaf'
>>> struct.unpack('Q', _)
(12638134423997487868L,)
>>> 0xaf63ac4c86019afc == _[0]
True

但是,Python 需要 FNV1A_64_INIT,因为默认情况下不会通过它。

>>> FNV1A_64_INIT = 0xcbf29ce484222325
>>> import pyhash
>>> hasher = pyhash.fnv1a_64()
>>> hasher('1', seed=FNV1A_64_INIT)
12638134423997487868L
>>> _ == 0xaf63ac4c86019afc
True

关于python - FNV1A_64 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13078183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com