🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2554

Re: Konwersja dużych liczb

#2554
From: Kamil
Date: Sun, 08 Sep 2013 11:38
50 lines
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-mail
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>

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