2012-12-13 4 views
3

j'ai un QbyteArray nommé "B2",ajouter un numéro à QByteArray

et je veux ajouter à cela un numéro de 2 octets comme 300.

mais quand je le fais mybyte.size() deviennent 3byte!!!!

mon code est:

je veux devenir ce 2 octets.

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

et ceci est mon sortie:

3 3 

Répondre

3

Comme cela est expliqué dans le documentation:

QByteArray :: setNum() définit le tableau d'octets à la valeur imprimée du n dans la base de base (10 par défaut) et renvoie une référence au tableau d'octets. La base peut être n'importe quelle valeur entre 2 et 36.

Il est évident qu'il vous donne une taille de 3, puisque vous définissez un tableau de 3 octets.

mise à jour

for (int i = 0; i < 2; i++) { 
    B2.append(myint >> (i * 8)); 
} 
+0

ok, mais je veux avoir un QbyteArray que Byte 1 et Byte 2 sont pour un nombre de 2Byte et Byte3 to Byte n sont pour d'autres données, maintenant si nous le faisons si mon numéro était 2 alors mon QbyteArray perdra son formulaire? ! comprenez vous? ce que je dis? –

+0

que puis-je faire pour corriger chaque nombre (0-511) à octet 0 et octet 1 de mon Qbytearray? –

+0

vous devez "transformer" votre int en tableau d'octets. Jetez un oeil à cette question: http://stackoverflow.com/questions/5585532/c-int-to-byte-array –

0

Si vous essayez d'ajouter une valeur à court (2 octets), vous pouvez le faire

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

Il ajoutera de la valeur à court dans le grand ordre endian

Questions connexes