Навигация:
<< >> Оглавление Указатель

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.11. Разбор текста

А.5.11.6. rdsReadHexText – разбор шестнадцатеричного блока текста

Функция rdsReadHexText считывает шестнадцатеричный блок из переданного в параметрах текста и, преобразовав каждую пару шестнадцатеричных цифр в этом блоке в один байт, записывает эти байты последовательно в указанный буфер. Строка должна иметь кодировку UTF8.

  int  rdsReadHexText(
     Start,         // Начало текста (UTF8)
     *pNextWord,    // Возврат – конец описания (UTF8)
     Buffer,       // Буфер для записи
    int MaxSize          // Размер буфера
  );

Тип указателя на эту функцию

RDS_ISpSpVI

Параметры

Start (RDSCSTR)
Указатель на начало текста. Пробелы и табуляции в начале текста будут пропущены.
pNextWord (*)
Указатель на переменную типа char*, в которую будет записан указатель на начало следующего за шестнадцатеричным блоком слова строки Start. Если вызывающей программе не нужно знать начало следующего слова, в этом параметре можно передать NULL.
Buffer (LPVOID)
Указатель общего вида (void*) на заполняемый функцией буфер.
MaxSize (int)
Размер буфера, переданного в параметре Buffer (функция не станет писать в него больше MaxSize байтов).

Возвращаемое значение

Число байтов, фактически записанное в буфер.

Примечания

Эта функция извлекает из строки Start блок шестнадцатеричных данных и записывает его побайтно в буфер Buffer. Блок данных может быть заключен в кавычки, в этом случае функция будет автоматически обрабатывать знак продолжения «+», используемый в текстовом формате схем RDS – обнаружив его, она пропустит следующий за ним перевод строки и повторение знака продолжения, считая следующую строку текста продолжением текущей строки. Обычно функцией rdsReadHexText обрабатывают текст, записанный функцией rdsWriteHexText при сохранении данных блока – форматы данных этих двух функций полностью совместимы.

Функция запишет в буфер Buffer не более MaxSize байтов. Если шестнадцатеричный блок окажется длиннее (то есть будет содержать больше 2×MaxSize шестнадцатеричных цифр), лишние байты в конце блока будут потеряны. Функция пишет данные в буфер побайтно, то есть в результате выполнения программы

  char *text=" \"ff2e1f\"";
  BYTE Buffer[3];
  rdsReadHexText(text,NULL,Buffer,3);

в Buffer[0] будет записано значение 255 (0xff), в Buffer[1] – 46 (0x2e), а в Buffer[2] – 31 (0x1f).

Функция не поддерживает кодировку UTF16, поскольку текстовые данные блока всегда хранятся и передаются в модель в кодировке UTF8. Если необходимо считать данные из строки в UTF16, необходимо предварительно преобразовать ее функцией rdsUTF16toUTF8.

См. также

rdsWriteHexText.


<< >> Оглавление Указатель