我使用Qt将小数转换为十六进制字符串
QString hexvalue = QString("%1").arg(decimal, 8, 16, QLatin1Char( '0' ));
我希望有
1: 00 00 00 01
-1: FF FF FF FF
但是这个代码导致了
FF FF FF FF FF FF FF FF
和00 00 00 01
如何将此限制为4个字节?
您可以使用带AND运算符的掩码来执行此操作:
int val = -1;
qDebug() << QString("%1 : %2").arg(val).arg(val & 0xffffffff, 8, 16, QLatin1Char('0'));
会显示
“-1:ffffffff”
编辑
根据评论中的要求,这是在length
范围内使用变量0 < length <= 8
的一种方法:
int mask = 0xffffffff >> (32 - 4 * length); // assuming a 32 bit integer
int val = -1;
qDebug() << QString("%1 : %2").arg(val).arg((unsigned int)(val & mask), length, 16, QLatin1Char('0'));