问题标签 [fnv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8019 浏览

java - Java中是否有成熟的FNV哈希算法实现?

我已经看到 Fowler-Noll-Vo (FNV) 被推荐为快速散列算法的不错选择,用于我们实现一致的散列系统。

不过,似乎无法为它找到一个好的 Java 源代码。

0 投票
4 回答
2246 浏览

iphone - Objective-C:Fowler–Noll–Vo (FNV) 哈希实现

我的 iPhone 项目中有一个 HTTP 连接器,并且查询必须使用 Fowler–Noll–Vo (FNV) 哈希从用户名中设置一个参数。

我现在有一个 Java 实现,这是代码:

现在在 iPhone 端,我这样做了:

这个脚本没有给我与 Java 相同的结果。

在第一个循环中,我得到了这个:

哈希 = 0

hash = 100(第一个字母是“d”)

hash = 1865261300(对于 hash = 100 和 fnv_prime = -2128831035,就像在 Java 中一样)

有人看到我缺少的东西吗?

在此先感谢您的帮助 !

0 投票
3 回答
1112 浏览

delphi - FNV的实施

我正在尝试从http://isthe.com/chongo/tech/comp/fnv/实现 FNV 哈希

我将该页面上的 PowerBasic 的内联汇编转换为 Delphi。

如果给定文件的大小超过 200KB,则输出是随机(散列)数。我错过了什么吗?

0 投票
1 回答
2197 浏览

c - C中字符串的FNV散列

这是算法所说的。

但是如果我有一组字符串,那么我应该将什么作为 FNV_offset_basis,

以及要散列的每个八位字节数据的含义是什么。

还有表的大小应该是多少,比如说有 N 个要散列的字符串。

请帮助我修改字符串。

谢谢。

0 投票
4 回答
550 浏览

c++ - 静态伪随机场发生器

我为游戏编写的随机数生成器遇到了问题。我需要一个快速的伪随机场发生器。它不需要加密安全,它只需要接受一个向量和一个种子,并给出一个足够随机的散列值来欺骗粗略的人工检查。

但是,当我给出一个 2d 向量并将结果修改为 2 时,此代码无法产生“伪随机”输出。它产生的主要是棋盘格图案。

我不知道为什么,老实说,知道它会很酷,但如果我永远弄不明白,我不会出汗。大多数情况下,我只是觉得这种生成随机数的方法太糟糕了,所以我想知道解决这个问题的另一种方法。即,我真的在寻找资源或指针,以这种方式生成随机数的好方法,而不是问“我做错了什么?”

基本上,如果我输入相同的输入,我正在尝试生成一个可以返回的“无限”2D 噪声场(想想,白噪声)。

我写的代码是(它应该是一个 fnv 哈希,请原谅模板的东西。我只是把它从代码中拉出来了。我稍后会清理它)。

0 投票
2 回答
1914 浏览

php - FNV 'flavors' 和 PHP 实现

我正在尝试将FNV散列算法集成到基于 PHP 的项目中,作为为各种数据(例如 URL、关键字)生成散列的要求的一部分。

我看到了 Neven Boyanov 的这个实现。他提到由于 PHP 中的算术限制,他被迫使用按位移位和加法而不是乘法。他的实现正确吗?我的知识在计算机科学领域受到某种限制,因此我无法自己验证。

我的另一个问题是关于 FNV 的不同“风味”。我看到它提供了 32 位、64 位和 128 位变体,但使用上述实现我总是得到 8 个字符的十六进制哈希(我使用 dechex() 将整数结果转换为十六进制)。

给定输入“Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at libero mi, quis luctus massa.”,我得到以下十六进制结果:

  • (32 位偏移) 5b15c0f2
  • (64 位偏移)6ea33cb5

为什么会这样?我期待来自 64 位 FNV 的 16 个字符的十六进制结果。“风味”是否仅指将使用的算术运算和种子类型而不是结果的长度?(即如果我说 64 位 FNV,散列函数将使用 64 位操作和种子,但结果仍然是 32 位)

一点启发将不胜感激:)

0 投票
1 回答
1516 浏览

python - FNV1A_64 不匹配

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

1)Maatkit

结果-5808609649712063748

2)pyhash

结果53876069782339L

3)fnv

结果0xaf63ac4c86019afc(12638134423997487000 十进制)

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

0 投票
1 回答
7545 浏览

c# - FNV Hash 的 C# 实现

我有很多情况需要在 C# 中访问一个体面的散列算法,从覆盖GetHashCode到对数据执行快速比较/查找。

我发现 FNV 哈希是一种非常简单/好/快速的哈希算法。但是,我从未见过 C# 实现的好例子。

FNV-1a哈希算法的核心如下:

所以,当我覆盖GetHashCode一个类时,我最终会做类似的事情:

人们对此有何看法?

0 投票
2 回答
998 浏览

c - 如何编译和运行 FNV Hash

我正在研究开源散列函数,以观察源代码和散列算法如何处理散列冲突。我目前对低位散列函数很感兴趣,我通过这个 other 发现了 FNV帖子了解了 FNV

但是,有谁知道我如何实际测试这个特定的源代码?我曾尝试编译一些 C 文件,但我不断收到来自 gcc 的错误:

关于我必须专门编译哪些文件才能运行和测试程序的任何想法?

提前感谢您的帮助

FNV:信息下载

运行 make check 后,我得到以下信息:

也许这就是我应该得到的,我会更彻底地阅读 FNV 以了解如何实际运行测试,但我第一次没有看到

0 投票
1 回答
301 浏览

delphi - FNV 哈希在 64 位操作系统中产生不同的结果

我使用 FNV 在我的 32 位操作系统中散列文件。如果我在 64 位操作系统中使用代码,为什么相同代码的哈希结果会不同?

这是我的代码: