QDataStream et ordre des octets
Bonjour,
Je ne trouve pas de solution au problème suivant, posé par mon chef.
Voici le contexte.
Ce que j'ai : une structure de données (typedef struct) contenant des uint8, des uint32, des char *, des int16 provenant d'une bibliothèque en C.
Ce que je veux : sérialiser une instance de cette structure en format Little Endian OU Big Endian, dans un fichier binaire avec 1) la taille requise de l'instance toujours en BigEndian 2) suivie de la valeur en LittleEndian ou BigEndian.
Actuellement j'y arrive presque via
Code:
1 2 3 4 5 6 7 8 9 10 11
|
dataStream.setDevice(m_binFile);
dataStream.setByteOrder(QDataStream::BigEndian /* ou LittleEndian*/);
/* length */
dataStream << quint32(7);
/* data (example for digital data without char * data) */
dataStream << qint16( QString(readBytesList.value(0)).toInt())
<< quint32(QString(readBytesList.value(1)).toUInt())
<< quint8( QString(readBytesList.value(2)).toUInt()); |
Le problème est le suivant :
La fonction setByteOrder() change tous les octets, or je voudrais toujours avoir le champs "taille" en BigEndian.
Comment faire ?
Merci pour les pistes que vous pourriez m'apporter ! :)