GMP(MPIR)-初始化时保持前导零

问题描述 投票:0回答:1

我正在研究一个程序,在该程序中,读取一串一和零的“ 0 0 0 0 1 1 0 0 0 ...”等作为输入。

对于程序的一部分,我们需要将此字符串转换为位向量/位数组。方便地,mpz_init_set_str在GMP库中提供了此功能(程序的其余部分使用GMP来加快计算速度)。

但是,由于mpz_init_set_str丢弃了前导零:https://github.com/alisw/GMP/blob/master/mpz/set_str.c#L103,所以第一组零会被忽略,直到我们命中一个。

GMP库中是否有一个函数,使得mpz_init_set_str不会忽略前导零?

我知道我可以修改GMP库来解决此问题,但是我认为这对于用户安装来说很痛苦。

while ((bytesRead = fread(buffer, 1, 8192, file)) > 0)
        {
            mpz_init_set_str(res, buffer, 2);
            mpz_export(buff, &result, 1, 1, 0, 0, res);
            for (size_t i = 0; i < result; i++) {
                fputc(buff[i], fptr);
            }
            mpz_clear(res);
        }

我正在研究一个程序,在该程序中,我们读取一串一和零的“ 0 0 0 0 1 1 0 0 0 ...”等作为输入。对于程序的一部分,我们需要将此字符串转换为位向量/位数组。 ...

c gmp
1个回答
1
投票

添加“假” 1,然后得到该位并转换回其旧值:

© www.soinside.com 2019 - 2024. All rights reserved.