ZX Spectrum > PROGRAMOWANIE
Konwerter HEX to BIN i odwrotność
Gelip:
Potrzebuję program, który zamienia wartość HEX 8-bit na BIN, odwraca bity i oblicza znowu HEX:
--- Kod: ---HEX -> BIN -> REVBIN -> HEX
40 - 01000000 - 00000010 - 2
C0 - 11000000 - 00000011 - 3
78 - 01111000 - 00011110 - 1e
--- Koniec kodu ---
Znalazłem jakieś programy i próbuję zlepić ale coś chyba pomieszałem i nie wiem jak teraz zamienić znowu bin na dec i na hex:
HEXtoDEC
DECtoBIN
Wyszło mi coś takiego.
DEC mi w sumie nie potrzebne tylko hex i bin
trojacek:
A jakie masz wymagania jeśli chodzi o wydajność? To jednorazowa konwersja, czy coś, co jest liczone na bieżąco?
Bo jeśli to ma być zrobione prosto i działać szybko, to ja bym to stablicował jako nibble (4 bity):
0 -> 0
1 -> 8
2 -> 4
3 -> C
4 -> 2
...
E -> 7
F -> F
Nie zapominając o zamianie miejscami młodszego nibble ze starszym.
Unika się jakiejkolwiek konwersji z/na format binarny*, przesuwania bitów itp. Masz znaki HEX na wejściu i znaki HEX na wyjściu.
* - z wyjątkiem policzenia indeksu do tablicy.
Gelip:
Chodzi o jednorazowe przeliczenie:
[*]program pyta o wartość HEX 8-bit
[*]konwertuje na bin, odwraca i konwertuje na hex
[*]wszystko wyświetla ładnie na ekranie i goto początek[/list]
Nie ukrywam iż chciałem gotowca :P w przeciwnym razie będę musiał przysiąść do tego co mam bo już prawie uzyskałem rozwiąznie - trzeba by rozpisać na kartce blokowo co robią poszczególne części programu i gdzie mają być skoki goto.
Da się w BASIC'u bez zamiany na dec tylko od razy na bin?
trojacek:
To jakiś przykład dydaktyczny? Bo nie bardzo widzę w nim sens.
Gelip:
--- Cytat: trojacek w 2021.11.07, 12:49:18 ---To jakiś przykład dydaktyczny? Bo nie bardzo widzę w nim sens.
--- Koniec cytatu ---
Konwerter kodu IR w formacie 32-bit unsigned integer na kod NEC ADDR=xx, CMD=xx np.
mam kod przycisku 807F28D7 gdzie adres 80 NOT=7F polecenie 28 NOT=D7 i z tego ma wyjść:
80h = 10000000b -> rev 00000001 = 01h ADDR
28h = 00101000b -> rev 00010100 = 14h CMD
Nawigacja
[#] Następna strona
Idź do wersji pełnej