Преобразование целого числа GMP в базовое целое число N - PullRequest
2 голосов
/ 09 октября 2011

GMP позволяет печатать mpz_t до 62, но я хочу представить число в любую базовую N, и для этого мне сначала нужно сгенерировать массив целых чисел (допустим, я ограничусь базой 2 ^ 64), так что массив unsigned long может сделать это.

Например, если я хочу взять любое целое число и преобразовать его в основание 792, я не могу поместить его непосредственно в строку, сначала я должен создать массив целых чисел.

Существует ли в GMP код для этого, например, какая-то математика, о которой мне нужно узнать, или я должен начать ее кодировать?

P.S. Я знаю, что совершенно неуместно использовать термин «базовый», хотя я мог бы использовать «линейное векторное пространство», поэтому это делает бессмысленным преобразование, но в Юникоде много символов (95 221 в Юникоде 3.2), поэтому я все еще могу найти способ представления тех, с одним символом.

1 Ответ

2 голосов
/ 09 октября 2011

Внутренне, функции GMP прямо или косвенно вызывают слой mpn, который описан здесь:

http://gmplib.org/manual/Low_002dlevel-Functions.html#Low_002dlevel-Functions

mpn_get_str поддерживает только базы до 256.не думайте, что вы сможете подняться выше, если не напишите свое собственное базовое преобразование (что вовсе не тривиально).

...