Zamiana liczby szesnastkowej na dziesietna

0

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.

1

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.

1

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.

0

Dziękuje bardzo za wskazówki, teraz już na pewno sobie poradzę

0

Mam jeszcze jedno pytanie, jak podmienić litery na liczby?

0

na przykład IF

0

Ok, ale wobec tego jaki typ tablicy przyjąć? Integer czy String?

0

Tablicy? Nie rozumiem pytania.

0

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?

0

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.

2

Dziwne pomysły.

String hex = "17fd345";
String dec = ""+Integer.parseInt(hex,16);

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