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

问题描述 投票:1回答:1

我使用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个字节?

qt type-conversion hex
1个回答
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'));
© www.soinside.com 2019 - 2024. All rights reserved.