Le stockage entier QByteArray en utilisant seulement 4 octets
Il prend 4 octets pour représenter un nombre entier. Comment puis-je stocker un int
dans un QByteArray
de sorte qu'il ne prend que 4 octets?
QByteArray::number(..)
convertit un entier en chaîne de caractères prenant ainsi plus de 4 octets.QByteArray((const char*)&myInteger,sizeof(int))
aussi ne semble pas fonctionner.
En fait, te deuxième solution fonctionne 🙂 Vous avez juste besoin de le lancer correctement. Vais poster une réponse lorsque la minuterie permettra ainsi d'aider les autres (je vois beaucoup de cette question, partout, nulle part correctement résolues dans une SORTE de façon :))
Je sais que c'est un peu vieux, mais qu'entendez-vous par
Je sais que c'est un peu vieux, mais qu'entendez-vous par
cast it properly
? J'ai essayé de le lancer correctement pour les 2 dernières heures.. 😀
OriginalL'auteur Primož Kralj | 2012-12-02
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs façons de passer d'un nombre entier en un
QByteArray
, mais la suivante est généralement le plus propre:Cela a l'avantage de vous permettre d'écrire plusieurs entiers (ou d'autres types de données) pour le tableau d'octets assez facilement. Il vous permet également de définir le stockage des données à l'aide
QDataStream::setByteOrder
.Mise à jour
Tandis que la solution ci-dessus ne fonctionne, la méthode utilisée par
QDataStream
pour stocker des entiers peuvent changer dans les futures versions de Qt. Le moyen le plus simple pour s'assurer qu'il fonctionne toujours est de définir explicitement la version du format de données utilisé parQDataStream
:Alternativement, vous pouvez éviter d'utiliser
QDataStream
complètement et utiliser unQBuffer
:Dans quelles circonstances serait-il pas de produire un 4-tableau d'octets (surtout si
myInteger
est de typeqint32
ouquint32
)?OriginalL'auteur RA.
@Primož Kralj ne pas se déplacer à l'affichage d'une solution avec son deuxième méthode, si elle est ici:
imprime:
sur une machine x64.
OriginalL'auteur dqbydt