EncodeCodePointToOctet
Short summary
This function encodes one code point to octets
Parameters
| Name | Type | Comment | Kind |
|---|---|---|---|
| codePoint | UnicodeCodePoint | codepoint value | input |
| octetCount | ( 1..4 ) | number of ctets | input |
| targetOctetBuffer | POINTER TO BYTE | buffer where the octets are stored | input |
Code
Declaration
FUNCTION INTERNAL EncodeCodePointToOctet
VAR_INPUT
(* codepoint value *)
codePoint :UnicodeCodePoint;
(* number of ctets *)
octetCount :BYTE(1..4);
(* buffer where the octets are stored *)
targetOctetBuffer :POINTER TO BYTE;
END_VAR
Implementation
CASE octetCount OF
1:
targetOctetBuffer[0] := TO_BYTE(codePoint);
2:
targetOctetBuffer[0] := 16#C0 OR TO_BYTE(SHR(codePoint,6));
targetOctetBuffer[1] := 16#80 OR TO_BYTE(codePoint AND 16#3F);
3:
targetOctetBuffer[0] := 16#E0 OR TO_BYTE(SHR(codePoint,12));
targetOctetBuffer[1] := 16#80 OR TO_BYTE(SHR(codePoint,6) AND 16#3F);
targetOctetBuffer[2] := 16#80 OR TO_BYTE(codePoint AND 16#3F);
4:
targetOctetBuffer[0] := 16#F0 OR TO_BYTE(SHR(codePoint,18));
targetOctetBuffer[1] := 16#80 OR TO_BYTE(SHR(codePoint,12) AND 16#3F);
targetOctetBuffer[2] := 16#80 OR TO_BYTE(SHR(codePoint,6) AND 16#3F);
targetOctetBuffer[3] := 16#80 OR TO_BYTE(codePoint AND 16#3F);
END_CASE