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.
Zamiana liczby szesnastkowej na dziesietna
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5
- Rejestracja: dni
- Ostatnio: dni
- Postów: 87
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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Rzeszów
- Postów: 15
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5
Dziękuje bardzo za wskazówki, teraz już na pewno sobie poradzę
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5
Mam jeszcze jedno pytanie, jak podmienić litery na liczby?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5
Ok, ale wobec tego jaki typ tablicy przyjąć? Integer czy String?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5
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?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 87
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.
- Rejestracja: dni
- Ostatnio: dni
Dziwne pomysły.
String hex = "17fd345";
String dec = ""+Integer.parseInt(hex,16);