我觉得有点困惑了。我正在尝试一个简单的事情,但是令人难以置信的是,在Qt(使用Qt 5.6.2)中没有内置的方法来将QByteArray中的数据从big endian转换为little endian。我试着用以下测试QByteArray开头:
QByteArray value;
value.append(0x01);
value.append(0x02);
value.append(0x03);
qDebug() << "Original value is: " << value.toHex(); // “010203” like expected
我需要的是小端字节序,也就是输出应该是“030201”。在Qt Framework中有没有内置的东西可以实现这个功能呢?我没有找到。目前我尝试过:
// Try with build in QtEndian stuff
QByteArray test = qToLittleEndian(value);
qDebug() << "Test value is: " << test.toHex(); // 010203
// Try via QDataStream
QByteArray data;
QDataStream out(&data, QIODevice::ReadWrite);
out.setByteOrder(QDataStream::LittleEndian);
out << value;
qDebug() << "Changed value is: " << data.toHex(); // "03000000010203"
有什么好点子吗?或者我真的需要手动切换吗?在SO或谷歌上没找到有帮助的东西,或者可能是我问的问题不对...
char
,uint16_t
,double
等。 - bnaeckerstd::reverse
。 - bnaecker