QDataStream default LittleEndian
-
Hi,
till today, use QDatastream was not a problem, it writes data in BigEndian by default.
But I want to create a binary file and Qt write it in LittleEndian format. And if I force it with setByteOrder(QDataStream::BigEndian), it keeps LittleEndian format.Someone has already this problem ?
QFile f("D:/Temp/camera.dat"); f.open(QIODevice::WriteOnly); QDataStream str(&f); str.setByteOrder(QDataStream::BigEndian); int test = 1080; str.writeRawData(reinterpret_cast<char*>(&test), sizeof(int)); f.close();I use W11 and Qt 6.4.2
Thanks
-
Hi,
till today, use QDatastream was not a problem, it writes data in BigEndian by default.
But I want to create a binary file and Qt write it in LittleEndian format. And if I force it with setByteOrder(QDataStream::BigEndian), it keeps LittleEndian format.Someone has already this problem ?
QFile f("D:/Temp/camera.dat"); f.open(QIODevice::WriteOnly); QDataStream str(&f); str.setByteOrder(QDataStream::BigEndian); int test = 1080; str.writeRawData(reinterpret_cast<char*>(&test), sizeof(int)); f.close();I use W11 and Qt 6.4.2
Thanks
@OPit said in QDataStream default LittleEndian:
str.writeRawData(reinterpret_cast<char*>(&test), sizeof(int));
Why don't you do instead:
str << test;?
There is no byte order for a byte array. -
@OPit said in QDataStream default LittleEndian:
str.writeRawData(reinterpret_cast<char*>(&test), sizeof(int));
Why don't you do instead:
str << test;?
There is no byte order for a byte array. -
@OPit said in QDataStream default LittleEndian:
str.writeRawData(reinterpret_cast<char*>(&test), sizeof(int));
Why don't you do instead:
str << test;?
There is no byte order for a byte array. -
O OPit has marked this topic as solved on
-
@jsulm Oh thank you. I believed Qt was adding pseudo data when use << .
Perfect, it's resolved (even if I don't know why LittleEndian is always used with writeRawData)
@OPit said in QDataStream default LittleEndian:
why LittleEndian is always used with writeRawData
Because writeRawData writes a bunch of bytes and byte order is not relevant for it. Byte order is only relevant for things like integers, floats, ... (for data types bigger than one byte).