Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/48: Рейтинг темы: голосов - 48, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 27.04.2019
Сообщений: 113
1

Как работать с большими числами (больше чем int64)?

13.11.2019, 20:04. Показов 9407. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дело такое: написал алгоритм, где генерируется код, по которому далее шифруется текст. Шифрование (алгоритм RSA, подробности работы описывать не стал, это не главное) осуществляется таким образом, что берется символ из строки и ему присваивается порядковый номер (если это так можно назвать) по кодировке Windows (OrdAnsi), далее уже происходят прочие вычисления.

Моя проблема заключается в том, что генерируемый код имеет ограничения (т.к. переменные int64) и числа берутся с границей 9223372036854775807 (64 бита вроде как), мне нужно чтобы числа были больше этой самой границы (>100 бит ), есть в PascalABC.Net переменная biginteger, но такие переменные не считываются функциями OrdAnsi и ChrAnsi - выводит ошибку, что нельзя использовать переменную biginteger (с int64 и просто integer можно, но как я уже сказал там "маленький" диапазон значений).

Прошу вашей помощи, как можно реализовать такой алгоритм, а именно:
- Каким образом можно брать огромные числа выше границы переменной int64, но чтобы можно было без ошибок переводить символы в строковое значение и наоборот?
- И если кому не трудно (это не обязательно), то почему с переменной biginteger нельзя переводить в строковое значение?
Буду очень признателен

Спасибо! Жду ваших идей как реализовать это.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2019, 20:04
Ответы с готовыми решениями:

Как работать с большими числами
Если нужно с числами длиной 128 бит или больше. Есть ли встроенный тип данных для таких размеров.

Как работать с большими числами?
Пытаюсь записать и вывести большое число. Запись числа //Дата в миллисекундах...

Как работать с очень большими числами?
Как можно складывать, вычитать, умножать друг на друга очень большие числа, которые не вмещаются...

Как работать с большими числами, не вмещающиеся в тип double
Доброго времени суток. Нужно найти x. 6^x mod 89548831 = 35152307 я решил сделать обычным...

5
Status 418
Эксперт Python
4578 / 2345 / 602
Регистрация: 26.11.2017
Сообщений: 5,265
Записей в блоге: 3
13.11.2019, 20:32 2
Цитата Сообщение от cwa1110 Посмотреть сообщение
почему с переменной biginteger нельзя переводить в строковое значение?
Почему нельзя?
Pascal
1
2
3
4
5
6
7
8
begin
  var s := ReadString;
  Println(s, s.GetType);
  var a := s.ToBigInteger;
  Println(a, a.GetType);
  var t := a.ToString;
  Println(t, t.GetType);  
end.
0
0 / 0 / 0
Регистрация: 27.04.2019
Сообщений: 113
13.11.2019, 20:50  [ТС] 3
Первый снимок с int64 - работает
Однако на втором снимке biginteger - не работает, а мне необходимо реализовать с большими числами мой алгоритм
Миниатюры
Как работать с большими числами (больше чем int64)?   Как работать с большими числами (больше чем int64)?  
0
0 / 0 / 0
Регистрация: 27.04.2019
Сообщений: 113
13.11.2019, 20:57  [ТС] 4
Цитата Сообщение от eaa Посмотреть сообщение
Почему нельзя?
Pascal
1
2
3
4
5
6
7
8
begin
  var s := ReadString;
  Println(s, s.GetType);
  var a := s.ToBigInteger;
  Println(a, a.GetType);
  var t := a.ToString;
  Println(t, t.GetType);  
end.
Вот такие дела..
0
Status 418
Эксперт Python
4578 / 2345 / 602
Регистрация: 26.11.2017
Сообщений: 5,265
Записей в блоге: 3
13.11.2019, 20:58 5
Chr ? там тип word.
А зачем тогда BigInteger?

Pascal
1
2
3
4
begin
  var a :BigInteger := 1086;
  Println(Chr(word(a)));
end.
Только не понятно зачем.
1
0 / 0 / 0
Регистрация: 27.04.2019
Сообщений: 113
13.11.2019, 21:02  [ТС] 6
ChrAnsi(a: byte): char; "Преобразует код в символ в кодировке Windows"
Не знаю почему char, брал из справки, что сам предлагал Pascal
0
13.11.2019, 21:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2019, 21:02
Помогаю со студенческими работами здесь

Как работать с числами больше long long ?
Програмка который выводит субфакториал. Когда пользователь задает 6 или 9 то норм. но если 50 100...

Как работать с большими текстами?
Что посоветуете чтоб программка начала работать с большими текстами. С небольшой строкой у нас...

Как работать с большими XML
На стороннем сайте лежит XML, все товары магазина с описанием. 50 Мб. Мне нужны из этого файла...

Как работать с большими словарями
Здравствуйте! Подскажите пожайлуста как работать с большими словарями: в файле храниться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru