добавление числа в QByteArray

у меня есть QbyteArray по имени "B2",

и я хочу добавить к этому 2-байтовое число, например 300.

но когда я это сделаю mybyte.size() станет 3byte!!!!

мой код:

я хочу, чтобы он стал 2 байта.

    QByteArray B2;
        short int myint;
        myint=300;
        B2.setNum(myint);
qDebug()<<B2[0]<<B2.size();

и это мой вывод:

3 3 

person Erfan Tavakoli    schedule 13.12.2012    source источник


Ответы (2)


Как поясняется в документации:

QByteArray::setNum() устанавливает массив байтов в напечатанное значение n в базовой базе (10 по умолчанию) и возвращает ссылку на массив байтов. Базой может быть любое значение от 2 до 36.

Очевидно, что это дает вам размер 3, так как вы устанавливаете массив из 3 байтов.

Обновить

for (int i = 0; i < 2; i++) {
  B2.append(myint >> (i * 8));
}
person Luca Davanzo    schedule 13.12.2012
comment
хорошо, но я хочу иметь QbyteArray, в котором байт 1 и байт 2 предназначены для 2-байтового числа, а от байта 3 до байта n — для других данных, теперь, если мы сделаем это, если мое число было 2, тогда мой QbyteArray потеряет свою форму? ! Вы понимаете? что я сказал? - person Erfan Tavakoli; 13.12.2012
comment
что я могу сделать, чтобы исправить каждое число (0-511) на байт 0 и байт 1 моего Qbytearray? - person Erfan Tavakoli; 13.12.2012
comment
вам нужно преобразовать свой int в массив байтов. Взгляните на этот вопрос: stackoverflow.com/questions/5585532/c-int-to-byte -массив - person Luca Davanzo; 13.12.2012

Если вы пытаетесь добавить короткое значение (2 байта), вы можете сделать это

B2.append((char)((myint & 0xFF00) >> 8));
B2.append((char)(myint & 0x00FF));

Он добавит короткое значение в порядке с обратным порядком байтов.

person benjarobin    schedule 13.12.2012