QDatastreamを使用して、以下のようなリトルエンディアンARMマシン上のQByteArrayからquint32配列にデータを入力しています。
    // Modify the header
    QByteArray header = QByteArray::fromRawData((const char*)dataPtr,HEADER_SIZE);
    QDataStream dataStream(header);
    dataStream.setByteOrder(QDataStream::LittleEndian);
    quint32 headerBuffer[NUMBER_HEADER_ENTRIES];
    int bufferCnt = 0;
    while ( !dataStream.atEnd() ) {
        // Pop off a 32 bit int
        quint32 temp;
        dataStream >> temp;
        // insert into buffer
        headerBuffer[bufferCnt] = temp;
        // Increment counter
        bufferCnt++;
    }
問題はバイトオーダーにあります。headerBuffer [113]の32ビットフィールドの最後の4ビットを取得する必要があるため、headerBufferのそのエントリを0xfとAND演算しようとしました。このフィールドに対してチェックする期待値は「3」です。ただし、このAND演算では、以下に示すように「a」が返されます。エントリが「0x1a13&0x000f」になるようにバイトを交換すると、「3」になります。私が見ているものと比較して、期待される値の他のいくつかの例を以下に見ることができます。そのため、QDataStreamのByteOrderをLittleEndianに設定していますが、それでも目的の結果が得られません。私は何が間違っているのですか?0x131aの代わりに0x1a13を取得するにはどうすればよいですか?ありがとう!
        qDebug() << "ONE: " << QString("%1").arg(headerBuffer[0], 0, 16); // This prints: 494d0152 -- Should be: 4d495201
        qDebug() << "TWO: " << QString("%1").arg(headerBuffer[1], 0, 16); // This prints: 5400 -- Should be: 54
        qDebug() << "THREE: " << QString("%1").arg(headerBuffer[113] & 0x000f, 0, 16); // This prints: a -- Should be: 3 ( headerBuffer[113] is always 0x131a )
        qDebug() << "FOUR: " << QString("%1").arg(0x1a13 & 0x000f, 0, 16); // This prints: 3 -- Should be: 3