我正在尝试阅读标题。这是结构:
struct header
{
uint32 offset;
char identifier[4];
uint32 unknown;
};
当我通过 memcpy 读取复制内存时,我可以正确输出偏移量(通常为大数)。
当使用带有字节数组的内置函数时,我读入了整个文件,然后使用以下方法获取前四个字节:
QByteArray offset = data.left(4);
然后我验证它已经正确复制,它有。
我的问题是将这些字节转换为适当的数据类型。我努力了:
qDebug() << "Offset1:" << offset.toUShort();
qDebug() << "Offset2:" << offset;
qDebug() << "Offset3:" << offset.toHex();
qDebug() << "Offset4:" << offset.toInt();
qDebug() << "Offset5:" << offset.toLong();
qDebug() << "Offset6:" << offset.toUInt();
qDebug() << "Offset7:" << offset.toULong();
qDebug() << "Offset8:" << offset.toULongLong();
qDebug() << "Offset9:" << offset.toULong();
它们都没有输出正确的值。另一方面,当我只是 memcpy 然后使用:
qDebug() << "Offset:" << header.offset;
我得到了正确的值。从字节到 uint32 的转换中我缺少什么?
它与字节序有关吗?