Как распаковать bool в PHP из структуры / строки Qt

Я должен распаковать структуру в PHP, который был записан в fifo.
Структура orginal была создана приложением Qt и выглядит следующим образом:

    typedef struct {
float32_t fNumberOne;
uint16_t uIntOne; //maybe padding for alignment?
bool_t myOneBitBool;
float32_t fNumberTwo;
} mystruct;

Теперь структура была сериализована, чтобы записать ее в fifo / named-pipe, чтобы «PHP» мог прочитать fifo и распаковать () структуру.
Если вы прочитаете fifo, вы получите строку. В этой строке вы можете использовать substr (), чтобы получить (в этом примере) 4 байта для первого числа с плавающей запятой fNumberOne. И если вы получите свою подстроку, вы можете распаковать () это с такими параметрами, как «f» для float. Это прекрасно работает для меня.

Но, как вы можете видеть здесь, есть 1 32-битное число с плавающей запятой, 1 16-битное значение типа int, наш 1 bool, которому требуется только 1 бит, и еще одно 32-битное число с плавающей запятой.

Поэтому мой вопрос заключается в том, правильно ли я получу свой первый float и первый 16-битный int (байты 1-4 и 5-6) и как мне получить свой bool-бит из этой структурной строки (внутри позиции 7?)? И что делает компилятор с остальными 15 битами между bool и вторым float (байтовые остатки 7 и 8)? Следующие биты являются вторым поплавком или они не используются? Или же помогает какой-либо padding сообщить компилятору, что он должен использовать другой 32-битный контейнер?

Или лучше, как выглядит struct-string на двоичном уровне?

Для получения дополнительной информации компилятор не настроен с этими настройками. Это все в стандартных настройках.

Спасибо заранее

1

Решение

Если вы используете C ++ 11, alignas() может быть то, что вы ищете

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector