zoukankan      html  css  js  c++  java
  • 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数据
  • 相关阅读:
    windows下用cmd命令netstat查看系统端口使用情况
    linux 运维知识体系
    Oracle中MD5+Base64加密实现
    MySql学习—— 查询性能优化 深入理解MySql如何执行查询
    Mysql集群和主从
    Docker搭建 oracle
    docker容器以ROOT账号登录(获取ROOT权限/ROOT密码)
    一文看懂javaGC
    Docker 国内仓库和镜像
    排序算法___堆排序
  • 原文地址:https://www.cnblogs.com/Mike2019/p/14184519.html
Copyright © 2011-2022 走看看