INT64 tmp = 0;
//举例:QString hexStr = "4646464646433244";
//第一步可以将16进制字符串分割得到下面的数组, 可以用str.toInt(NULL, 16)
//高字节在前,低字节在后
int array[8] = {0x46, 0x46, 0x46, 0x46, 0x46, 0x43, 0x32, 0x44};
for(int i=0; i<8; i++)
{
if(i == 0)
{
//Check if it is negative value
if((array[0] & 0x80) == 0x80)
tmp += ((INT64)((array[0] & 0xFF) | 0xFFFFFFFFFFFFFF00) << 7*8);
else
tmp += ((INT64)(array[0] & 0xFF) << (7*8));
}
else
{
tmp += ((INT64)(array[i] & 0xFF) << (7-i)*8);
}
}
qDebug() << tmp;
for(int i=0; i<8; i++)
{
qDebug() << QString::number(tmp>>((7-i)*8) & 0xFF, 16);
}
进一步,可以将代码封装为函数去调用