69 tecken kort UTF-8-kodare i C

Magnus Danielson magnus at rubidium.dyndns.org
Sat Jun 30 16:39:31 CEST 2007


From: David Vuorio <vuorio at kth.se>
Subject: Re: 69 tecken kort UTF-8-kodare i C
Date: Sat, 30 Jun 2007 16:20:19 +0200
Message-ID: <468666A3.5000000 at kth.se>

> Per von Zweigbergk wrote:
> > Jag slogs för någon timme eller två sedan av en tanke. En riktigt  
> > kort version av en kodare från ISO-8859-1 till UTF-8.
> > 
> > main(c){for(;c=~getchar();putchar(~c))c&128?:putchar(c>>6^63,c|=64);}
> 
> Den är buggig, se min kommentar i tråden och en patch nedan. ;-)

PS. Man kan inte anta för func(expr1, expr2) att expr1 eller expr2 kommer
exekvera först eller sist. Det är upp till kompilatorn att välja strategi som
den passar. GCC kan väl tänkas ha bytt strategi i 4.* eftersom just optimerings
delen har skrivits om från scratch. Bidraget kvalificerat eftersom det
utnyttjar specifika kompilatoregenskaper. Gör om gör rätt. Se Davids patch.

MVH
Magnus


More information about the Stacken mailing list