превращаю его в quint32 quint32 val = qFromLittleEndian<quint32>(reinterpret_cast<char *>(chararray)); вот так получается какая-то шляпа, а когда я их сначала пихаю в QbyteArray QByteArray valueTest(reinterpret_cast<char *>(chararray),4); а уже потом в qFromLittleEndian<quint32>(valueTest); он переводит все правильно? и дело не в порядке символов, я пробовала баловаться с little и big endian
Лучше шифтами явно преобразовывать.
unsigned char test[4] = {1, 2, 3, 4}; unsigned int result = 0; result |= test[0]; result |= test[1] >> 8; result |= test[2] >> 16; result |= test[3] >> 24;
Можно еще так для удобства uint32_t reverseUint32(char ∗c) { uint32_t s; char ∗p = (char ∗)&s; p[0] = c[3]; p[1] = c[2]; p[2] = c[1]; p[3] = c[0]; return s; }
врешь небось: char arr[sizeof(quint32)] = {1}; quint32 le = qFromLittleEndian<quint32>(arr); qDebug() << le; quint32 be = qFromBigEndian<quint32>(arr); qDebug() << be;
Обсуждают сегодня