В настоящее время я использую NTL для обработки больших целых чисел. Большие целые числа в этой библиотеке объявлены как ZZ. Я хотел бы перейти от числа ZZ к шестнадцатеричному. Однако NTL не поддерживает преобразование из ZZ в шестнадцатеричные числа, как я проверял.
Итак, мой вопрос, как я могу перейти от ZZ (или, возможно, строки, которые представляют большие десятичные числа) в шестнадцатеричные формы? Я предпочитаю, если можно использовать возможности этой библиотеки, чтобы перейти прямо в гекс из ZZ, если кто-то может помочь
Шаг 1: Большое число xx изначально принимается как строка s
Шаг 2: Скажем, строка s имеет длину l, тогда s = s [0] s [1] … s [l-1]. Мы читаем каждый символ s, начиная с позиции 0, и каждый раз преобразуем эту цифру в целочисленную переменную цифру, используя int digit = atoi (ts.c_str ()); Затем мы используем значение рекурсивного отношения = 10 * значение + цифра, где значение объявляется как ZZ и инициализируется равным 0. После перебора всех цифр мы передаем строку в значение ZZ
Шаг 3: Теперь, чтобы преобразовать в шестнадцатеричную форму, используя NTL, мы можем вычислить по модулю 16 чисел ZZ. Итак, начиная со значения% 2 и затем вычисляя (значение-значение% 16) / 16 и продолжая таким образом, мы получаем шестнадцатеричную форму.
Других решений пока нет …