Article View: pl.comp.lang.asm
Article #2554Re: Konwersja dużych liczb
From: Kamil
Date: Sun, 08 Sep 2013 11:38
Date: Sun, 08 Sep 2013 11:38
50 lines
3281 bytes
3281 bytes
Użytkownik "Bogdan (bogdro)" napisał: >> GetDlgItemText wczytuje liczby dec z kontrolki zamieniając je na >> ASCII. > Tak właściwie, to już są w ASCII. Funkcja po prostu umieszcza tekst w > buforze, nie konwertuje sama sobie np. cyfry "1" na wartość 31h, bo > to, co robi za cyfrę "1", już ma wartość 31h. W kontrolce jest 1, a funkcja pobierając znak "w locie" go konwertuje i do bufora wpisuje już 31. Widziałem to w debuggerze. > Dobrze, to kroki powinny być takie: > 1. Oczyszczanie z ASCII: iterujemy po jednym znaku na raz: > a) wczytaj kolejny znak z bufora (od przodu) > b) odejmij 30h (kod zera w ASCII) lub po prostu '0' czy "0" > c) bieżącą liczbę pomnóż przez 10 (mnożenie wielokrotnej precyzji z > mojej strony) > d) do bieżącej liczby dodaj znak pomniejszony o 30h w punkcie b) - tu > nie trzeba dodawania wielokrotnej precyzji Jak rozumiem powyższe kroki trzeba wykonać wielokrotnie w pętli? Tyle razy ile mamy znaków? Ostatniego znaku nie mnożymy, a tylko go dodajemy do wyniku? > 2. Zamieniać na hex w pamięci już nie musisz. Nie muszę ponieważ mnożenie przez 10 jest właśnie konwersją dec na hex. > 3. Mając tak przygotowane dane wejściowe, wykonujesz odpowiednie > działanie (dodawanie, odejmowanie itp.). > 4. Zamieniać na postać dziesiętną w pamięci nie musisz. A to niżej to co to jest jak nie właśnie konwersja hex na dec? :) > 5. Konwersja na ASCII: najlepiej też metoda po jednym znaku na raz: > a) wyczyść bufor podręczny i wyjściowy > b) jeśli liczba jest zerem, to przejdź do g) > c) dzielimy liczbę przez 10 (dzielenie wielokrotnej precyzji) > d) do RESZTY z dzielenia dodajemy '0' (lub 30h) > e) zmienioną resztę z dzielenia zapisujemy w buforze podręcznym > f) wracamy do punktu a) > g) w buforze wyjściowym zapisz reszty z dzielenia znajdujące się w > buforze podręcznym, ale WSPAK (pierwszy bajt ma być ostatnim) > h) wyświetl bufor wyjściowy Dzięki za teorię. Zobaczymy jak zdołam to zaimplementować. Pozdrawiam
Technical Details
Message-ID:
<522c61b4$0$1470$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!news-out.readnews.com!transit3.readnews.com!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<52239cda$0$1225$65785112@news.neostrada.pl> <522a0fcd$0$1459$65785112@news.neostrada.pl> <522a4a2c$0$1268$65785112@news.neostrada.pl> <522b5a7a$0$1263$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!news-out.readnews.com!transit3.readnews.com!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail From: "Kamil" <nospam@tlen.pl> Newsgroups: pl.comp.lang.asm References: <52239cda$0$1225$65785112@news.neostrada.pl> <522a0fcd$0$1459$65785112@news.neostrada.pl> <522a4a2c$0$1268$65785112@news.neostrada.pl> <522b5a7a$0$1263$65785112@news.neostrada.pl> Subject: Re: Konwersja dużych liczb Date: Sun, 8 Sep 2013 13:38:07 +0200 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Lines: 51 Message-ID: <522c61b4$0$1470$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 83.4.134.152 X-Trace: 1378640308 unt-rea-a-01.news.neostrada.pl 1470 83.4.134.152:1454 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit