2024-09-26 17:37:47 发布
网友
我尝试3种不同的fnf1a_64哈希实现。在
1)Maatkit
SELECT FNV1A_64('1')
结果:-5808609649712063748
2)pyhash
结果: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
MySQL和命令行程序给出了相同的结果。其中一个只是打印一个有符号的数字,另一个打印的是同一个数字的十六进制表示。在
但是,Python需要
^{pr2}$FNV1A_64_INIT
,因为默认情况下不会传递它。在相关问题 更多 >
编程相关推荐