QT 16进制与10进制转化

这篇博客主要记录了在QT环境下,如何进行10进制到16进制以及16进制到10进制的转化操作,旨在防止遗忘并作为日后参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

10进制转16进制

int dec = 20;
QString hex = QString("%1").arg(dec,0,16,QLatin1Char('0')).toUtf8();
qDebug()<<"hex "<<hex ;         //输出  hex  "14"

16进制转10进制

bool ok;
QString hex = "EFC9A32C";
ulong dec = hex.toLongLong(&ok, 16);
qDebug()<<"dec "<<dec ;         //输出  dec  4022969132

结语

怕忘,纯做记录

### QT 中实现十进制负数到补码表示的16进制 对于QT环境中处理十进制负数并将其换为带有补码表示的十六进制字符串,可以采用如下方法: 当涉及到带符号整数向其对应的十六进制补码形式变时,程序需遵循特定逻辑来确保正确性。具体来说,针对负数值的操作流程涉及几个关键环节:首先是确定数据类型及其位宽;其次是计算该负数绝对值对应无符号类型的二进制表达方式;最后基于此构建完整的补码结构,并最终呈现为期望中的十六进制格式。 在C++以及由此衍生出来的QT框架下,可利用内置函数`QString::number()`配合适当参数完成上述过程[^1]。下面给出一段示范代码用于说明这一操作的具体实施办法: ```cpp #include <QCoreApplication> #include <QDebug> QString decimalToHexComplement(int value, int bitWidth){ unsigned long mask = (1UL << bitWidth) - 1; unsigned long complementValue = static_cast<unsigned long>(value) & mask; QString hexString = QString::number(complementValue, 16).toUpper(); while(hexString.length() < ((bitWidth + 3) / 4)){ hexString.prepend('0'); } return "0x" + hexString; } int main(){ qDebug() << decimalToHexComplement(-789, 32); // 输出结果取决于计算机体系架构 } ``` 这段代码定义了一个名为`decimalToHexComplement` 的辅助函数,它接收两个参数——待转化的整型变量 `value` 和指定的数据宽度 `bitWidth` 。这里假设输入的是有符号整数,并且指定了目标字节长度(比如常见的32位)。通过创建掩码并原始值相得到非负范围内的等效值之后,调用`QString::number()` 函数将这个内部状态映射至相应的十六进制串上。为了保持输出的一致性和美观度,还额外添加了一些前导零填充机制以确保所得字符串始终具有预期固定长度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值