на самом деле, передается #HGGLPHGNKHIGGGGGGGROOU\xD, что при распаковке дает:
10 05 91 07 41 20 00 00 00 b8 8e
41 20 00 - это значение
00 00 - индекс (используется с конфигурационными параметрами)
b8 8e - контрольная сумма
10,0 получается так:
Код:
void unpackFloat24(unsigned char* data, size_t dataSize, float* value)
{
char *p;
assert(data);
assert(dataSize == 3);
assert(value);
*value = 1.0f;
p = (char *)(void *)value;
/* для x86 меняем порядок байт */
p[0] = 0;
p[1] = data[2];
p[2] = data[1];
p[3] = data[0];
}