Как я могу преобразовать строку в номер ZZ?

StackOverflow https://stackoverflow.com/questions/2117312

  •  22-09-2019
  •  | 
  •  

Вопрос

я использую НТЛ-библиотека реализовать алгоритм шифрования/дешифрования Эль-Гамаля.Я дошел до того, что это работает, но алгоритм хочет, чтобы сообщение было преобразовано в целые числа, чтобы его можно было зашифровать.
Итак, если я ввожу число вроде 1234, все работает нормально, но как мне преобразовать строку C++ (std::string) в номер ZZ, а затем обратно из этого номера ZZ в строку?

ЛЕ:

ZZ это класс, который представляет большое число.
Бывший:18287348238476283658234881728316274273671623781254124517353

Итак, по сути, я хочу взять, например, «Hello World», запустить его посимвольно и получить ascii-код символов, чтобы получить число:«72 101 108 108 111 32 87 111 114 108 100»
И затем мне нужно преобразовать это число обратно в строку «Hello World».

Или, может быть, есть лучший способ.

Это было полезно?

Решение

Вот простой способ сделать это:

std::string str("1234567890");
NTL::ZZ number(NTL::INIT_VAL, str.c_str());

Теперь обратите внимание:

std::cout << str << std::endl; // prints 1234567890
std::cout << number << std::endl; // prints 1234567890

Другие советы

Вот ответ с сайта автора NTL:

В дополнение к перечисленным конверсиям существует общее преобразование из C-струны (т.е. const char *) к любому типу t, который реализован с использованием шаблонов с использованием оператора ввода >> для типа T.Так, например, вы можете написать

    ZZ x = conv<ZZ>("99999999999999999999999");

Источник: http://www.shouup.net/ntl/doc/conversions.txt

Я попробовал, и это сработало отлично.

Безусловно, самое простое решение — осознать, что вы можете конвертировать chars для unsigned intпесок unsigned ints для ZZ цифры.Затем обработайте строку как число по основанию 256.Например, "abc" будет выглядеть так: 256*"ab" + "c" или 65536 * "a" + 256 * "b" + "c" или ((ZZ(unsigned('a')*256) + ZZ(unsigned('b'))*256) + ZZ(unsigned('c')),

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top