我是否需要使用type Long将2166136261存储在Java中



我正在尝试在Java中实现一个简单的FNV哈希功能。该函数需要值2166136261作为函数参数。在一个在线来源中,该数字分配如下:

private static final int FNV_32_INIT = 0x811C9DC5;

,但我认为这是不正确的,因为2166136261大于2147483647,这是int可以拥有的最大价值。

我是否正确地假设我至少需要long类型的变量才能存储该值,而不管十进制或十分十六进制?


编辑:

该算法中用作偏移基础的值是任意的,因此FNV_32_INIT = 21666136261还是其他值:

关于offset_basis值:

从FNV-0到FNV-1的开关纯粹是为了更改Offset_basis 到非零值。该非零值的选择是 随意的。字符串:chongo/../已使用 因为测试人员正在查看兰登的电子邮件 兰登的标准电子邮件签名线。实际上是这样做的人 那看不到。今天,兰登(Landon)使用()而不是<> 和他的ascii蝙蝠使用" oo"眼睛而不是" .."(如:chongo)(兰登(Landon) curt noll)/ oo/我们没有费心纠正她的错误,因为 不要紧。在一般情况下,几乎所有oftset_basis都会 只要不为零。

是的,你是正确的。

它以十进制,十六进制,二进制,八分,基础64或任何其他radix表示,表达式都代表相同的幅度。

最新更新