DecodeCodepointFromOctets
Short summary
This method decodes one code point from octets
- Return type: UnicodeCodePoint
Parameters
| Name | Type | Comment | Kind |
|---|---|---|---|
| octetsToDecode | POINTER TO BYTE | pointer to next octet | input |
| octetToDecodeCount | ( 1..4 ) | number of octets | input |
Code
Declaration
FUNCTION INTERNAL DecodeCodepointFromOctets : UnicodeCodePoint
VAR_INPUT
(* pointer to next octet *)
octetsToDecode :POINTER TO BYTE;
(* number of octets *)
octetToDecodeCount :BYTE(1..4);
END_VAR
VAR
codePoint :UnicodeCodePoint;
END_VAR
Implementation
CASE octetToDecodeCount OF
1:
codePoint := octetsToDecode[0];
2:
codePoint := octetsToDecode[0] AND 16#1F;
codePoint := SHL(codePoint, 6) OR (octetsToDecode[1] AND 16#3F);
3:
codePoint := octetsToDecode[0] AND 16#0F;
codePoint := SHL(codePoint, 6) OR (octetsToDecode[1] AND 16#3F);
codePoint := SHL(codePoint, 6) OR (octetsToDecode[2] AND 16#3F);
4:
codePoint := octetsToDecode[0] AND 16#07;
codePoint := SHL(codePoint, 6) OR (octetsToDecode[1] AND 16#3F);
codePoint := SHL(codePoint, 6) OR (octetsToDecode[2] AND 16#3F);
codePoint := SHL(codePoint, 6) OR (octetsToDecode[3] AND 16#3F);
END_CASE
DecodeCodepointFromOctets := codePoint;