biginteger на Цели-c

Это не имеет никакого отношения к скорости. Это о сбое корректно.

, Если require_once () сбои, Ваш сценарий сделан. Ничто иное не обрабатывается. При использовании include_once (), остальная часть сценария попытается продолжить представлять, таким образом, пользователи потенциально ничего не узнали бы к чему-то, что перестало работать в сценарии.

15
задан Basil Bourque 4 September 2016 в 01:53
поделиться

4 ответа

Как обычная библиотека C, openssl BN должен уметь это делать.

BN_mod_exp () вычисляет a в p-й степени по модулю m (r = a ^ p% m). Эта функция использует меньше времени и места, чем BN_exp ().

7
ответ дан 1 December 2019 в 02:10
поделиться

Ближайшим встроенным классом в библиотеках Какао является NSDecimalNumber , который обеспечивает арифметику с основанием 10 (и поэтому может обрабатывать арифметические операции только с целыми числами) для диапазона мантисса x 10 ^ экспонента где мантисса - это 38-битное число с плавающей запятой, а экспонента - от -128 до 128. Если это покрывает необходимый вам диапазон, существуют методы умножения и мощности. В противном случае, поскольку Objective-C является надмножеством C, любой C-реализации bigint, которую вы можете найти, будет достаточно.

4
ответ дан 1 December 2019 в 02:10
поделиться

Однажды, давным-давно, я накатал собственную обертку вокруг GMP. Я никогда раньше не использовал сторонние библиотекари BigNum ObjC, но у меня есть закладки: RSMath , который использует функции большого размера OpenSSL, и MPInteger , который использует GMP.

2
ответ дан 1 December 2019 в 02:10
поделиться

Надеюсь, еще не поздно ответить на эту тему.

Вы можете попробовать " LibTomMath ", который является открытым и бесплатным (автор раздает этот проект как общедоступный домен). Он работает из коробки без какой-либо конфигурации, просто поместите все bn _ *. C и tommath * .h в свой проект Xcode, и вы готовы к работе.

#import "tommath.h"

mp_int number1, number2, number3;

mp_init(&number1);
mp_init(&number2);
mp_init(&number3);

mp_read_radix(&number1, "0a120edfff558c98a73015d5d67e8990", 16);
mp_read_radix(&number2, "12e6f45d698c7b7009a841c1348d6ff4", 16);

mp_mul(&number1, &number2, &number3);

char output[1000];
mp_toradix(&number3, output, 16);
NSLog(@"number3:%s", output);

mp_div(&number3, &number1, &number2, NULL);
mp_toradix(&number2, output, 16);
NSLog(@"number2:%s", output);
10
ответ дан 1 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: