Qt 21行实现 十六进制字符串互转QByteArray QString Hex互转QByteArray

本文介绍了如何在Qt中使用QString进行十六进制字符串到字节数组(ByteArray)的转换(hexStr2ByteArray)和字节数组回转为十六进制字符串(byteArray2HexStr),并展示了实际的转换操作结果。

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

1.效果
	QString strMsg = "01 02 1a ff010203f";
    QByteArray arr = hexStr2ByteArray(strMsg);
    QString strText = byteArray2HexStr(arr);
    qDebug()<<"toByteArray:"<<arr;
    qDebug()<<"toString:"<<strText;
	//打印结果----------------
	toByteArray: "\x01\x02\x1A\xFF\x01\x02\x03\x0F"
	toString: "01 02 1A FF 01 02 03 0F" 
2.代码
QByteArray hexStr2ByteArray(QString str)
{
    QByteArray byteArr;
    str = str.replace(" ",""); //去空格
    if (0 != (str.size() % 2)) {
        str.insert(str.size() - 1,'0'); //不是2的倍数 给最后一个补0 例如: a0 8 ,凑成 a0 08
    }

    for (int nIndex = 0; nIndex < str.size(); nIndex += 2) {
        char ch = QString(str[nIndex]).toInt(nullptr,16) * 16 + QString(str[nIndex + 1]).toInt(nullptr,16);
        byteArr.append(ch);
    }
    return byteArr;
}

QString byteArray2HexStr(QByteArray byteArr)
{
    QString str = byteArr.toHex().toUpper();
    
    for (int nIndex = 3; nIndex < str.size();nIndex += 3) {
        str = str.insert(nIndex-1," ");
    }
    return str;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值