Qt:将十进制转换为十六进制的4字节

时间:2019-04-17 09:29:23

标签: qt type-conversion hex

我正在使用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 FF00 00 00 01

如何将其限制为4个字节?

1 个答案:

答案 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'));