W jaki sposób, używając biblioteki vlong mogę przypisać do zmiennej VeryLongInt liczbę podaną w stringu '1247104594268279430043764498979855821678017079606970371640449048629485693808504213969045976869
5387702239460423942818549828416906858180227761208102796672433631944853781144171907648434092285
4929273517308661370727105382899118999403808045846444647284499123164879035103627004668521005328
367415259939915284902061793';
Myślałem nad napisaniem funkcji konwertującej liczbę na hex. Posiadając już hexa można przypisać odpowiednie wartości poszczególnym bajtom. Tylko że napisanie takiej funkcji zajęłoby mi pewnie trochę czasu i nie byłoby zbyt optymalne.
Niezła liczba (1237 bit), niestety ale nie można jej użyć jak typ "verylongint" zadeklarowany w vlong.pas.
Do tak dużych liczb, potrzebujesz czegoś w rodzaju Bigint. (najlepiej chyba się sprawuje FGInt.pas)
http://www.efg2.com/Lab/Library/Delphi/MathFunctions/Cryptography.htm
http://www.team-x.ru/guru-exe/index.php?sort=type&path=Sources/Units%20Includes/Delphi/Crypt/
@entek - a sprawdzałeś, że nie można? vlong obsługuje i znacznie większe liczby.
@RSA - to co podałeś należy np. przekonwertować do hex, wrzucenie potem do verylonginta byłoby banalne, jednak samo przekonwertowanie nie jest banalne (może je dopiszę za jakiś czas).
najprostsze wyjście - ustaw podstawę 10000 (zamiast standardowego 65536) i wszystkie obliczenia przeprowadzaj na niej, wtedy każde kolejne słowo tablicy zawierającej vlinta jest kolejną czwórką cyfr liczby w systemie dziesiętnym, wiec wrzucenie podanego łańcucha powinno być banalne (kosztem lekkiego spadku wydajności i ciut większego zużycia pamięci).
entek napisał(a)
Niezła liczba (1237 bit), niestety ale nie można jej użyć jak typ "verylongint" zadeklarowany w vlong.pas.
Do tak dużych liczb, potrzebujesz czegoś w rodzaju Bigint. (najlepiej chyba się sprawuje FGInt.pas)
http://www.efg2.com/Lab/Library/Delphi/MathFunctions/Cryptography.htm
http://www.team-x.ru/guru-exe/index.php?sort=type&path=Sources/Units%20Includes/Delphi/Crypt/
Dziękuję za podsunięcie biblioteki FGint.pas. Nie słyszałem o niej wcześniej. Rzeczywiście sprawuje się dobrze i ma procedury na wczytywanie liczb ze stringów. A jeśli chodzi o liczbę to jest ona 1024 bitowa ;-)
Potem porównam jeszcze szybkość obu bibliotek ponieważ wydajność przede wszystkim. Najwyżej przepisze procedurę konwertującą z FGinta do Vlong