Смотрю на документацию QByteArray и не понимаю.
Есть конструктор, который может создать QByteArray из const char * и заданной длинны:
QByteArray(const char *data, int size = -1)
При этом написано, что происходит копирование.
Теперь есть похожая задача: надо заполнить QByteArray из const char * и заданной длинны, но уже не в конструкторе, а отдельной командой.
Методы setRawData/fromRawData:
QByteArray &QByteArray::setRawData(const char *data, uint size)
и
QByteArray QByteArray::fromRawData(const char *data, int size)
не делают копирование.
А метод append
QByteArray & append(const char *str, int len)
который мог бы помочь (у меня исходный QByteArray пустой), работает именно со строкой, и не копирует дальше первого нуля в данных.
И больше я не вижу методов, которые бы заполнили QByteArray обычным массивом байт.