Obsah / Utility / CHARSET / CharUTF8Size
Zdrojový kód: INCLUDE\UTIL\CHARSET.INC, UTIL\CHARSET.ASM
CharUTF8Size - Zjištění velikosti znaku v kódu UTF-8
Funkce CharUTF8Size navrátí velikost znaku v kódu UTF-8.
|
Na vstupu funkce obsahuje registr EAX Unicode kód znaku a registr EDI čítač velikosti dat. Na výstupu funkce je čítač v registru EDI zvýšení o velikost dat, která by znak zabral ve výstupním bufferu. Obsah registru EAX je funkcí zničen.
|
Nejdříve je obsloužen nejjednodušší případ - znaky s kódem 0 až 7Fh zabírají 1 bajt, proto je zvýšen čítač dat o 1.
Pro znaky s vyšším kódem je počet bajtů počítán tak, že v kódu znaku je vyhledána pozice nejvyššího bitu a tato pozice je vynásobena číslem 51 a poté vydělena 256 (tj. je použit vyšší bajt výsledku násobení v registru AH), což přibližně odpovídá dělení 5. Tento výpočet se shoduje s počtem bajtů znaku v rozsahu 8 až 31 bitů.
Obsah / Utility / CHARSET / CharUTF8Size