Я работаю над программой, в которой мы читаем строку из нулей и единиц "0 0 0 0 1 1 0 0 0 ..." et c в качестве входных данных.
Для части Программа, нам нужно преобразовать эту строку в битовый вектор / массив битов. Удобно, что 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);
}