69 tecken kort UTF-8-kodare i C

David Vuorio vuorio at kth.se
Sat Jun 30 16:15:55 CEST 2007


Per von Zweigbergk wrote:
> 30 jun 2007 kl. 14.30 skrev David Vuorio:
> 
>> Didrik Madheden wrote:
>>> On 30/06/07, Per von Zweigbergk <pvz at pvz.pp.se> 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);}
>>> En sak jag inte fattar: Varför c|=64 med tilldelning? c|64 border väl
>>> funka lika bra då c ändå skrivs över i nästa cykel?
>>
>> Andra parametern evalueras först.
>>
>> /David
> 
> Nja, första parametern evalueras först, iaf på mitt system. Om man har
> ett system där andra parametern evalueras först, skulle man få fel
> resultat, eftersom en vital bit ifrån c skulle kastas bort -- en bit som
> påverkar uttrycket c>>6^63 -- nämligen den minst signifikanta biten i
> det uttrycket.

Nu när du säger det så blir det trasigt utdata, min Debian-GCC-burk
gillar nämligen den ordningen.

/David


More information about the Stacken mailing list