Podczas konstruowania BigInteger z ciągiem, ciąg musi być sformatowany jako liczba dziesiętna. Nie możesz używać liter, chyba że w drugim argumencie zostanie określona podstawa, możesz określić maksymalnie 36 w polu podstawowym. 36 da ci tylko znaki alfanumeryczne [0-9, a-z], więc jeśli użyjesz tego, nie będziesz miał formatowania. można tworzyć: nowy BigInteger ("ihavenospaces", 36) Następnie przekonwertować z powrotem, należy użyć .ToString (36)
ale żeby nie Formatowanie: Użyj byte [] sposób, że kilka osób wspomniało.To spakie dane z formatowaniem do najmniejszego rozmiaru i pozwoli na łatwe śledzenie liczby bajtów.
To powinno być idealne dla programu przykładowego klucza systemu kryptograficznego RSA, zakładając, że zachowasz liczbę bajtów w komunikat mniejsza niż liczba bajtów PQ
(zdaję sobie sprawę, ten wątek jest stary)
Jeśli rozumiem komentarze rację, Twój MSG nie jest koniecznie liczba. Sądzę, że większość z nas wierzyła, że msg miał być łańcuchem reprezentującym liczbę (np. "12345"). Ale to, co chcesz zrobić, to przekonwertować "hello" na pewną liczbę i ponownie odtworzyć oryginalny ciąg znaków. Zastanawiając się, dlaczego chcesz to zrobić ... IMO konwertując ciąg do BigInteger w ten sposób ma sens tylko wtedy, gdy chcesz wykonać obliczenia z uzyskaną liczbą, ale potem konwersja z powrotem nie miałaby sensu. czego mi brakuje? – Axel
faktycznie robiłem program na kryptosystemie RSA iw odpowiednim czasie potrzebowałem przekonwertować msg do BigInteger (podczas zapisywania) i znowu odwrotny proces podczas deszyfrowania. Ale powinieneś odpowiedzieć na to, nie wiedząc, dlaczego tak robię, ponieważ wszystko może " t być wyjaśnione tutaj. – condinya