zoukankan      html  css  js  c++  java
  • QT之QByteArray

    1、拷贝内容到QByteArray

    1.使用append函数    //结合结构体的(char*)强制转化使用,command.append((char*)&e2_System_Para_t, sizeof(e2_System_Para_t));

    2.使用memcpy函数,用memcpy之前先调用resize函数分配内存

    3.先resize,再使用[  ]函数

    2、从QByteArray中提取数据,一般使用memcpy函数结合结构体,比较快捷

    注意:

    QByteArray test;
    test.append(0x0800);        //test -->08。(小端)直接将0x0008转化为0x08。这里便只是添加了一个字节在test中。

     3、将存储的ASCII码取出(取出其中的基本数据类型,这里以float举例)

    void MyMethod::analysis0x08Packet(const QByteArray& ba, QVector<double>& x, QVector<double>& y)
    {
    	int wiresCount = (ba.size() - 20) / 16;
    	x.clear(); y.clear();
    	float tmpFloat=0;
    	QByteArray temp;
    	for (int i = 0; i < wiresCount; i++){
    		temp = QByteArray::fromHex(QString(ba.mid(17+16*i,8).data()).toLatin1());
              memcpy(&tmpFloat, temp.data(), 4);
    		x.append(tmpFloat);
    		temp = QByteArray::fromHex(QString(ba.mid(25 + 16*i, 8).data()).toLatin1());
    		memcpy(&tmpFloat, temp.data(), 4);
    		y.append(tmpFloat);
    	}
    }
    

     注意:fromHex()toLatin1()的使用

    [static] QByteArray QByteArray::fromHex(const QByteArray &hexEncoded)。例子如下:
    QByteArray text = QByteArray::fromHex("517420697320677265617421");
    text.data();            // returns "Qt is great!"
    QByteArray QString::toLatin1() const。//返回Latin1格式的QByteArray。Latin1是ISO-8859-1的别名,有些环境下写作Latin-1。ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。
    
    
    坚持成就伟大
  • 相关阅读:
    C99新增内容之复合文字(compound literal)
    直接编译caffe出现的两个问题
    安装cuda8.0中所遇到的问题-解决办法
    windows环境Caffe安装配置步骤(无GPU)及mnist训练
    leetcodeTop100好题
    只不过是从头再来,读java源码
    文章收藏
    java代码优化技巧
    xshell
    MVC框架笔记
  • 原文地址:https://www.cnblogs.com/xian-yongchao/p/9482756.html
Copyright © 2011-2022 走看看