Witam wszystkich,
Jestem zupełnie zielony w Javie i potrzebuje pomocy w napisaniu kodu do stworzenia kalkulatora do konwersji liczby szesnastkowej na dziesiętna. Byłbym wdzięczny, gdyby zostało to rozpisane łopatologicznie a nie za pomocą gotowej metody w Javie. Będę wdzięczny za jakakolwiek pomoc.
No ale na kartce umiesz zrobić? Jeżeli umiesz to w kodzie będzie niemal identycznie.
Załóżmy że masz Stringa z liczbą w HEX. Wynik trzymasz w osobnej zmiennej, potęgę w osobnej.
Bierzesz ostatni znak ze Stringa -> konwertujesz na liczbę DEC -> mnożysz przez 16 podniesione do potęgi -> aktualizujesz wynik -> inkrementujesz potęgę -> skracasz Stringa o ostatni element.
Operacje powtarzasz aż String będzie pusty.
aby zamienić liczę 16 na 10 to musisz kolejne liczby mnożyć razy 16 do potęgi z kolei np:
16FC --> (C * 16 0) +( F * 16 1) + (6 * 16 2) + (1 * 16 3)
w systemie 16 jak pewnie wiesz to:
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
Więc podmieniasz
16FC(16) --> (12 * 16 0) + ( 15 * 16 1) + (6 * 16 2) + (1 * 16 3) = 5884
To w javie musisz podobnie robić np.
Kolejne elementy liczy w sys. 16 przypisujesz do tablicy ale odwrotnie (16FC zapisujesz w tablicy jako CF61). Powinieneś sobie poradzić
Później przeglądasz tablice :
element tablicy mnożysz razy 16 do potęgi index
jeżeli element = literom to podmieniasz na liczby
C jest na indexie 0.
C podmieniasz na 12
12 mnożysz razy 16 do potęgi index(0)
i dodajesz do zmiennej przechowującej wynik.
F jest na indexie 1.
F podmieniasz na 15
15 mnożysz razy 16 do potęgi index(1)
i dodajesz do zmiennej przechowującej wynik.
6 jest na indexie 2.
6 mnożysz razy 16 do potęgi index(2)
i dodajesz do zmiennej przechowującej wynik.
1 jest na indexie 3.
1 mnożysz razy 16 do potęgi index(3)
i dodajesz do zmiennej przechowującej wynik.
Dziękuje bardzo za wskazówki, teraz już na pewno sobie poradzę
Mam jeszcze jedno pytanie, jak podmienić litery na liczby?
na przykład IF
Ok, ale wobec tego jaki typ tablicy przyjąć? Integer czy String?
Tablicy? Nie rozumiem pytania.
W celu sprawdzenia czy poszczególne wprowadzane znaki są cyframi liczby heksadecymalnej, muszę sprawdzić kolejne elementy wprowadzanej liczby, czyli potraktować liczbę jako tablice czyż nie?
Wprowadzasz znaki pojedynczo? W takim razie najlepiej przechowywać na stosie (LIFO), wtedy ściągając ze stosu nie musisz uwzględniać kroku "kasowanie ostatniego znaku w Stringu", a algorytm kończy się gdy stos stanie się pusty.
Dziwne pomysły.
String hex = "17fd345";
String dec = ""+Integer.parseInt(hex,16);
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.