LINUX.ORG.RU

[QByteArray] Инициализировать байтами


0

1

Есть набор байт, например

0x8B, 0x55, 0x0C, 0x83, 0xFA, 0x02, 0x75
Нужно инициализировать объект класса QByteArray этими байтами. Так вот, можно ли это сделать и как? Я нашёл только один способ - приводить каждый int к const char*, но это слишком громоздко и вообще не гуд. Есть другие способы?

  static const char mydata[] = {
    0x8B, 0x55, 0x0C, 0x83, 0xFA, 0x02, 0x75
 };

 QByteArray data = QByteArray::fromRawData(mydata, sizeof(mydata));

Если я правильно тебя понял.

madcore ★★★★★
()

Пока дошёл вот до чего:

QByteArray test((const char *)new int[7] {0x8B, 0x55, 0x0C, 0x83, 0xFA, 0x02, 0x75});
Проще никак?

Dragon59 ★★
() автор топика
Ответ на: комментарий от madcore

Спасибо, работает. Так, скорее всего, правильней, буду использовать.

Dragon59 ★★
() автор топика
Ответ на: комментарий от Dragon59

Во первых, такая форма конструкции массивов, насколько я понимаю, доступна только в с++0х

Во вторых, ты вызываешь конкретную перегруженную форму конструктора - конструктора из Си-строки. Знаешь, что такое Си-строка, и чем обозначается этот конец? Найдешь этот конец в своем массиве?

В третьих, QByteArray сделает полную копию данных, а то, что ты навыделял динамически, никто не подчистит.

yoghurt ★★★★★
()
Ответ на: комментарий от madcore
QByteArray data = QByteArray::fromRawData("\x8B\x55\x0C\x83\xFA\x02\x75", 7);
Jetty ★★★★★
()
Ответ на: комментарий от yoghurt

Спасибо большое, уже и сам понял, что не следует так делать.

Dragon59 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.