Не знал в какой форум написать. Использую C#, поэтому написал сюда.
Мне нужно правильно распарсить символьные блоки в PDF документе. Такие блоки могут содержать в том числе и текст в кодировке UTF-16, который сохраняется в виде массива байт.
Обычно такой блок выглядит таким образом:
1. Сначала идет символ открывающей скобки "(".
2. Затем идет сигнатура UTF-16 0xFE 0xFF.
3. Дальше идет сам текст в виде массива двух-байтных символов.
4. Дальше может могут идти любые однобайтные символы.
5. Закрывается блок символом ")"
К примеру, пусть есть строка "qwertyАБВГД123".
В PDF она хранится таким вот образом:
Начала строки я определяю по сигнатуре 0xFE 0xFF. Затем начинаю выбирать массив байт.
Тут возник вопрос: как корректно определить позицию где кончается массив двух-байтных символов, и начинаются однобайтные.
Первое что пришло в голову, определять является ли символ двух-байтный по первому нулевому байту.
Корректен ли такой подход, или здесь есть еще какие-то тонкости которых я не знаю?