GNU GMP中mpz_class的sizeinbase

时间:2019-01-27 14:50:22

标签: c++ gmp

在C中,我们有mpz_t,我们可以通过

访问base中的大小
size_t mpz_sizeinbase (const mpz_t op, int base)

在mpz_class中,我尝试过

counter.sizeinbase(2);

那没用。

error: ‘mpz_class {aka class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>}’ has no member named ‘sizeinbase’
      size_t size = (counter.sizeinbase(2) + CHAR_BIT-1) / CHAR_BIT;

我需要使用mpz_class简化unordered_map的代码

mpz_class是否有类似的功能或解决方法?

1 个答案:

答案 0 :(得分:3)

使用get_mpz_t方法访问包装的mpz_t值。

mpz_class x = ...;
size_t xbits = mpz_sizeinbase(x.get_mpz_t(), 2);

至少这在MPIR中有效,我认为它在GMP中也适用。