QT之QByteArray
2024-09-05 07:44:11
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之间是文字符号。
最新文章
- Net通用进销存管理系统 + 开发文档+ 使用说明
- SDUT 2608:Alice and Bob
- tableview_nav 动画效果
- MVC的异步,Entity Framework的异步,ADO.NET的异步,
- bzoj1385: [Baltic2000]Division expression
- GTK+中的树状列表构件(GtkTreeView)
- xCode如何导入自定义的snippets文件
- javascript 之闭包-理解不了来找我
- cnBlog 的windows live writer 客户端配置
- C3P0数据库连接池使用中的问题
- 「JavaScript面向对象编程指南」原型
- php生出随机字符串
- Jenkins控制台显示乱码
- poj1696
- mybatis cloud not autowired
- 总结Javascript中数组各种去重的方法
- 页面资源缓存 html css js
- hdu1165 规律递推
- Ubuntu16.04安装Elasticsearch
- HDU3507Print Article (斜率优化DP)