vlong i przypisywanie wielkich liczb

0

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.

0

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/

0

@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).

0
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

1 użytkowników online, w tym zalogowanych: 0, gości: 1