使用GMP类型(mpf_t / mpz_t)作为哈希表中的键

时间:2013-11-04 11:35:20

标签: c hash byte gmp

我需要使用GMP mpf_t / mpz_t作为哈希表中的键。 有没有有效的方法来访问数字表示的原始字节,以便我可以对它们运行哈希函数?

我已经阅读了文档,但我现在感觉不太聪明。 ;)

谢谢! 问候, Ethon

1 个答案:

答案 0 :(得分:2)

出于好奇,为什么在按值排序时使用散列?比较非常快,因为它比较了从MSB到LSB的字节/分支,一旦它们不同就返回结果。

您可以使用依赖于平台的mp_limb_t类型访问原始数据。 mpz_tmpf_t都有一个mp_limb_t向量存储在_mp_d指定的地址中,有效肢数由_mp_size的绝对值给出领域。 (定义在gmp.h

当然,如果散列函数依赖于8位字节向量,则需要转换肢体向量。幸运的是,mp_limb_t - GMP_LIMB_BITS中的位数总是可以在任何理智的平台上被8整除。