我正在使用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个字节?
答案 0 :(得分:0)
您可以将掩码与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'));