• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Вопрос По Qt 4

  • Автор темы DJKondakov
  • Дата начала
D

DJKondakov

Как бы немного не по теме, но синтаксис-то вроде Сишный...
В общем, проблема такая: имеется двухбайтовая целочисленная переменная (например, 0x006f), и массив класса QByteArray. Задача - поместить переменную в массив с сохранением всех ее двух байт (т. е. массив должен выглядеть примерно так: 00 6f).
Делаю так:
C++:
qint16 x = 0x006f;
QByteArray buf;
buf.append(x);
После выполнения кода в массив попадает только значащий байт переменной (т. е. 6f). Всю голову уже сломал.
 
R

rrrFer

а почему сломал?
0x006f это и есть 0x6f, именно это значение имеет переменная X в вашем коде
записывай в массив по одному байту, заходишь на официальный сайт, открываешь документацию и видишь пример:
Код:
QByteArray ba;
ba.resize(5);
ba[0] = 0x3c;
ba[1] = 0xb8;
ba[2] = 0x64;
ba[3] = 0x18;
ba[4] = 0xca;
вот примерно так и делай, тока первый байт 0x00
 
D

DJKondakov

Ну это-то как раз и понятно. Я так и делал, только вот переменная может вдруг и двухбайтовой стать (например, 0x6f6f). Проверять размер переменной, и если он не 2 байта, запихивать 0x00? Но sizeof(x); в любом случае вернет 2, т. е. размер типа qint16.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!