• QT常用数据格式转换


    1、QString

    1.1 QString转char*

    先将QString转为QByteArray,再将QByterray转为char*

    QString str;
    char * ch;
    QByteArray byte = str.toLatin1();    //将QString转为QByteArray
    ch = byte.data();

    1.2 QString转hex

    QString str = "0x1a";
    qint16 hex_value = str.toInt(nullptr, 16);

    1.3 数字转QString

    //方法1
    QString str = QString::number(54.2, 10);  //54.2十进制
    //方法2
    QString str;
    str.setNum(54.23);
    //方法3
    qint32 addr = 0x0800d000;
    QString b=QString("%1").arg(addr, 8, 16, QChar('0'));     //保留八位,16进制显示

     2、QByteArray

    https://www.freesion.com/article/5107168141/

    2.1 QByteArray转char*

    方法1 data()和size()函数:

    QByteArray array(10, 'Q');//初始化
    //array 赋值等代码
    char *buf;//只是一个指针
    int len;//buf的长度
    buf = array.data();
    len = array.size();

     方法2 memcpy函数(灵活):

    QByteArray array(9,'Q');
    char buf[10];//数组
    int len_array = array.size();
    int len_buf = sizeof(buf);
    int len = qMin( len_array, len_buf );
    // 转化
    memcpy( buf, array,  len );

    2.2 char*转QByteArray

    方法1 利用构造函数

    char buf[10];
    //给buf赋值
    for (int i = 0; i < 10; i++){
        buf[i] = (i + 1) % 3;//其中存在''元素
    }
    // 转化
    QByteArray array;
    array = QByteArray(buf, 10);//因为buf[]中有``,必须要写上数据长度;否则,数据会直接截断,丢失数据

     方法2 memcpy函数(灵活)

    char buf[10];
    //给buf赋值
    for (int i = 0; i < 10; i++){
        buf[i] = (i + 1) % 3;//其中存在''元素
    }
    // 转化
    QByteArray array;
    array.resize(sizeof(buf));//重置数据大小
    memcpy(array.data(), buf, sizeof(buf));//copy数据
  • 相关阅读:
    定时任务框架APScheduler学习详解
    Python list 和 str 互转
    python多个变量赋值
    python数据类型转换
    jquery datetimepicker 配置参数
    c#判断是否为合法的email地址
    SQL的四种连接-左外连接、右外连接、内连接、全连接
    SQL表连接查询(inner join、full join、left join、right join)
    简单的日期转换
    递归
  • 原文地址:https://www.cnblogs.com/Mike2019/p/14184519.html
Copyright © 2020-2023  润新知