我需要使用 GMP mpf_t/mpz_t 作为哈希表中的键。 是否有任何有效的方法来访问数字表示的原始字节,以便我可以对它们运行哈希函数?
我已经阅读了文档,但我现在并没有真正觉得自己变聪明了。 ;)
谢谢! 问候, 伊顿
最佳答案
出于好奇,既然可以按值排序,为什么还要使用散列?比较速度非常快,因为它比较从 MSB 到 LSB 的字节/分支,一旦不同就返回结果。
您可以使用依赖于平台的 mp_limb_t
类型访问原始数据。 mpz_t
和 mpf_t
都有一个 mp_limb_t
vector 存储在 _mp_d
指定的地址,其中包含重要肢体的数量由 _mp_size
字段的绝对值给出。 (定义在 gmp.h
中)
当然,如果哈希函数依赖于8位字节 vector ,则需要转换肢 vector 。幸运的是,mp_limb_t
中的位数 - GMP_LIMB_BITS
- 在任何健全的平台上总是可以被 8 整除。
关于c - 使用 GMP 类型 (mpf_t/mpz_t) 作为哈希表中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766874/