这段代码在QtCreator(Windows 7)上运行良好,但在基于Linux的嵌入式平台上运行时表现不同,我不知道如何开始调试它。
以下是相关代码:
QByteArray c(1, char(0x00));
bool bOk = false;
int intVal= c.toHex().toInt(&bOk,16);
if(bOk) {
qDebug() << "conversion success \t" << intVal;
}
else {
qDebug() << "conversion failed \t" << intVal;
}
在QtCreator中(在Windows中运行),这很正常,intVal
的值为0,正如预期的那样。
但是,在嵌入式Linux环境中编译和运行时,转换失败并且bOk
为false。
奇怪的是c = 0xFF
它在两种环境中都能正常工作。
Qt版本:4.7
答案 0 :(得分:0)
如果我理解正确,你说的是在Linux上使用BE-32 Endian(大端字不变性),而在英特尔处理器上使用的是小端。
您还需要1个字节并使用toInt()将其转换为2,然后再将其转换为Hex
我无法自行调试,我猜测使用不同的endian进行转换可能是问题所在,所以建议使用endian转换例程,如documented here。
您可以在these answers中了解不同的字节序。