博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT之QByteArray
阅读量:7104 次
发布时间:2019-06-28

本文共 1327 字,大约阅读时间需要 4 分钟。

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
& x, QVector
& 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::fromHex(const  &hexEncoded)。例子如下:
QByteArray text = QByteArray::fromHex("517420697320677265617421");text.data();            // returns "Qt is great!" ByteArray QString::toLatin1() const。//返回Latin1格式的ByteArray。Latin1是的别名,有些环境下写作Latin-1。ISO-8859-1编码是单编码,向下兼容,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是,0xA0-0xFF之间是文字符号。
 

转载于:https://www.cnblogs.com/xian-yongchao/p/9482756.html

你可能感兴趣的文章
ASCII Unicode UTF-8 之间的关系
查看>>
计算四则运算表达式(Java语言实现)
查看>>
5、反射-动态代理
查看>>
C++中的类型转换
查看>>
Linux内核的冷热缓存
查看>>
Rop攻击
查看>>
USACO习题:Palindromic Squares
查看>>
C语言中有bool类型吗?
查看>>
保护你的手腕!手腕健康度小检测
查看>>
LVM更换硬盘
查看>>
Helvetic Coding Contest 2017 online mirror M&N&O. April Fools' Problem
查看>>
Openjudge1388 Lake Counting【DFS/Flood Fill】
查看>>
我的vim配置
查看>>
grep 过滤器基础
查看>>
C#之regular expression
查看>>
有趣的鸡蛋问题,应该还可以进一步简化
查看>>
Halcon算子翻译——endtry
查看>>
用Windows 8开发第一个Windows应用商店应用
查看>>
Lua获取系统时间和时间格式化方法及格式化参数
查看>>
牛客练习赛12 A 圆圆 . B 迷宫
查看>>