Конструктор QByteArray(const char* str)
использует qstrlen
в качестве аргумента. Поскольку ваша строка начинается с байта 0x00, qstrlen
возвращает 0, поэтому результирующий массив QByteArray имеет длину 0 байтов.
Чтобы избежать проверки qstrlen
, используйте конструктор QByteArray(const char* str, int size)
:
qDebug() << QByteArray("\x00\x10\x00\x00", 4).size();
напечатает 4, как вы ожидаете.