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数据
  • 相关阅读:
    SAP组件和支持包的安装
    abap动态内表获取字段名
    ooalv设置保存格式
    READ_TEXT取的文本&变为 <(>&<)>了怎么办
    SAP后台作业相关表
    63013
    ABAP 对内表数据下载到EXCEL的几种方法
    vue 教程
    spring 注解@PathVariable
    MyBatis动态添加—trim标签
  • 原文地址:https://www.cnblogs.com/Mike2019/p/14184519.html
Copyright © 2011-2022 走看看