QT十进制转十六进制

将LineEdit中输入的字符串存储在变量中,将改便改良转为int型可进行逻辑运算,再把这个数转为16进制。

QString::number(dec,16)dec转换为一个十六进制字符串。第二个参数 16表示要将整数转换为十六进制格式。

.toUpper():将整个字符串转换为大写形式。这样可以保证输出的十六进制字符串中的字母为大写形式。最终,变量hex中存储的是一个大写形式的十六进制字符串,表示了对应十进制数dec的十六进制值。

用rightJustified(2, '0')将此变量右对齐,并在左侧填充指定字符(此次为0),使字符串长度为2

例如,如果hex的值为 "A1",则经过rightJustified(2, '0')处理后,midHex的值将变为 "A1";如果hex的值为 "B",则经过处理后,midHex的值将变为 "0B"。

将字符串按照2个字符为一组拆分并存储再hexSegments中。

用.join()将hexSegments中的每个字符串连接起来,join的参数就是连接字符串之间的分隔符,这里使用空格进行连接

在串口助手中进行数据处理时可用到此转换方法

QString input = ui->lineEdit->text();

    bool ok;
    int dec = input.toInt(&ok);

    if (!ok)
    {
        return;
    }

    // 将十进制转换为十六进制
    QString hex = QString::number(dec,16).toUpper();

    QString midHex = hex.rightJustified(2, '0'); //2位数,不足补零
    
    QString afterHex;

    afterHex = "7B0002"+midHex+"0000007D0D0A";

    QStringList hexSegments;
    
    for (int i = 0; i < afterHex.size(); i += 2)
    {
        hexSegments.append(afterHex.mid(i, 2));
    }
    QString overHex = hexSegments.join(" "); //每2位数+空格

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>