我需要使用GMP mpf_t / mpz_t作为哈希表中的键。 有没有有效的方法来访问数字表示的原始字节,以便我可以对它们运行哈希函数?
我已经阅读了文档,但我现在感觉不太聪明。 ;)
谢谢! 问候, Ethon
答案 0 :(得分:2)
出于好奇,为什么在按值排序时使用散列?比较非常快,因为它比较了从MSB到LSB的字节/分支,一旦它们不同就返回结果。
您可以使用依赖于平台的mp_limb_t
类型访问原始数据。 mpz_t
和mpf_t
都有一个mp_limb_t
向量存储在_mp_d
指定的地址中,有效肢数由_mp_size
的绝对值给出领域。 (定义在gmp.h
)
当然,如果散列函数依赖于8位字节向量,则需要转换肢体向量。幸运的是,mp_limb_t
- GMP_LIMB_BITS
中的位数总是可以在任何理智的平台上被8整除。