Qt 串口调试助手16进制收发显示

就不废话了,直接贴源码,如果你看懂我的源码的画,我认为90%的概率能解决你16进制显示问题,

注意! 注意! 注意! qt低版本可能不提供arr.hex(’ ');这个函数

源码

    QString str = ui->lineEdit->text ();//从QLineEdit 获取字符串 发送的16进制数 如11 22 33 44 55 66
    qDebug()<<"打印客户所需的16进制数据"<<str;
    if(str.contains (" ")){//检测字符串str是否包含空格
        str.remove (" ");//删除空格 得到不包含空格的数据112233445566
    }
    QByteArray arr;
    arr.append (str);//构建字节数组,数组值为112233445566
    QByteArray hex = QByteArray::fromHex (arr);//从16进制数据转换字节数组,得到字节数组hex值为:\x11\"3DUf
    qDebug()<<"打印转换后的需要发送的数据"<<hex;


    //假设对端发送过来的数据,也就是通常从io 读到的数据时resArr = readAll();此时的readAll()返回的数值就是\x11\"3DUf
    QString res;//
    QByteArray resArr = hex;//此时等效表达式为resArr = readAll()=hex

     qDebug()<<"打印接收的数据"<<hex;//打印接收的数据

    res.append (hex.toHex (' '));//以16进制方式显示接收的数据
    qDebug()<<"显示字符串"<<res;
    
    
    /*************qDebug()打印的结果*******************************
打印客户所需的16进制数据 "112233445566"
打印转换后的需要发送的数据 "\x11\"3DUf"
打印接收的数据 "\x11\"3DUf"
显示字符串 "11 22 33 44 55 66"
*/

一个quint8 的数,如何在控件中显示16进制?当值小于16时如何将16进制数前面补0?

quint8 data = 10;
ui->lineEdit->setText(QString("%1").arg(data,2,16,QLatin1Char('0')).toUpper());//显示0A
解释:
/*
@param 1 data,需要显示的数据
@param 2 2,占位2
@param 3 16,16进制显示数据
@param 4 QLatin1Char('0'),不足补0占位
*/

你可能感兴趣的:(c++,Qt,qt,开发语言)