From: Piotr Wyderski <peter.pan@neverland.mil>
Newsgroups: pl.comp.lang.c
Subject: Re: Szybkie itoa - praktyka
Date: Tue, 20 Sep 2011 19:46:52 +0200
[...]Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!not-for-mail
Organization: CI TASK http://www.task.gda.pl/
Lines: 27
Message-ID: <j5aji9$oe4$1@news.task.gda.pl>
References: <j55kbe$sqt$1@news.onet.pl>
     <j5a9gk$vk8$1@news.onet.pl>
     <j5ab83$7cc$1@news.onet.pl>
NNTP-Posting-Host: h82-143-146-166-static.e-wro.net.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: news.task.gda.pl 1316540809 25028 82.143.146.166 (20 Sep 2011 17:46:49 GMT)
X-Complaints-To: abuse@news.task.gda.pl
NNTP-Posting-Date: Tue, 20 Sep 2011 17:46:49 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20110902 Thunderbird/6.0.2
In-Reply-To: <j5ab83$7cc$1@news.onet.pl>
Xref: news-archive.icm.edu.pl pl.comp.lang.c:296238
bartekltg wrote:

> Nadal ma podstawową wadę, czyli zapisujemy liczbę od końca
> i trzeba ją odwrócić.

Dlatego najlepsze konwertery wykonują wstępne dzielenie
przez 10^8 (poprzez mnożenie przez odpowiednie stałe magiczne)
i następnie dzielą uzyskane fragmenty przez 10^4, 10^2 i 10^1.
Wynik konwersji powstaje równolegle i przy dostatecznie dużym
rejestrze tymczasowym jest dostępny cały od razu. Tak robi mój
konwerter 64-bit -> ASCII oparty na SSE. Wtedy masz problem zer
wiodących, ale na to też są odpowiednie sztuczki.

> Dość niepewnym pomysłem jest zapisywać liczbę od końca bufora
> (musimy znać jego długość), a zwrócić nie wskaźnik do bufora,
> ale do pierwszej liczby

A co w tym złego? :-D

> (ale to raczej proszenie się o kłopoty, ktoś może zapomnieć
 > i np spróbować zwolnić pamięć z takiego wyniku;)

"Mama mówiła: <<poznasz głupiego po czynach jego>>",
jak powiedział Forrest Gump :-)

	Pozdrawiam,
	Piotr Wyderski