У меня есть массив unsigned chars
.В основном у меня есть массив битов.
Я знаю, что первые 16 битов соответствуют целому числу без знака, и я извлекаю его значение, используя (u16)(*(buffer+ 1) << 8 | *abcBuffer)
Затем следует тип данных с именем u30
, который описывается следующим образом: u30 - variable length encoded 30-bit unsigned integer value
.Переменная кодировка для u30 использует от одного до пяти байтов, в зависимости от величины закодированного значения.Каждый байт вносит свои семь младших битов в значение. Если старший (8-й) бит байта установлен, то следующий байт также является частью значения.
Я не понимаю этого описания: там написано u30
(тридцать!), А потом написано от 1 до 5 байтов?Также у меня есть другой тип данных, который называется s24 - three-byte signed integer value.
Как следует читать (извлекать их значения) такие нетипичные типы данных?Любая помощь будет оценена.
Большое спасибо!