3

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

我已经阅读了文档,但我现在并不觉得自己更聪明。;)

谢谢!问候,伊顿

4

1 回答 1

3

出于好奇,当您可以按值排序时,为什么还要使用散列?比较非常快,因为它比较从 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 整除。

于 2013-11-04T14:39:40.750 回答