QT中QByteArray与char、int、float之间的互相转化怎么实现
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍了QT中QByteArray与char、int、float之间的互相转化怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇QT中QByteArray与
千家信息网最后更新 2025年02月23日QT中QByteArray与char、int、float之间的互相转化怎么实现
这篇文章主要介绍了QT中QByteArray与char、int、float之间的互相转化怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇QT中QByteArray与char、int、float之间的互相转化怎么实现文章都会有所收获,下面我们一起来看看吧。
1.问题来源
要用SQLite数据库去保存一段定长的char型数组,里面可能有\0等字符,所以当作字符串varchar处理铁定丢失数据,所以要用二进制保存BLOB,这样对应的QT数据类型要用QByteArray进行处理,原来只用到QByteArray转换成 char* 类型。
2.QByteArray与char*的转换
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;//其中存在'\0'元素}// 转化QByteArray array;array = QByteArray(buf, 10);//因为buf[]中有`\0`,必须要写上数据长度;否则,数据会直接截断,丢失数据
方式2 memcpy()方式 (灵活)
char buf[10];//给buf赋值for (int i = 0; i < 10; i++){ buf[i] = (i + 1) % 3;//其中存在'\0'元素}// 转化QByteArray array;array.resize(sizeof(buf));//重置数据大小memcpy(array.data(), buf, sizeof(buf));//copy数据
3.QByteArray与int 以及int[] 的转换
3.1. int 与 QByteArray 互转
[1] int 转 QByteArray
// int 转 QByteArrayint intVar = 199;QByteArray array;int len_intVar = sizeof(intVar);array.resize(len_intVar);memcpy(array.data(), &intVar, len_intVar);
[2]QByteArray 转 int
// QByteArray 转 int// array 数据接上面int outIntVar;memcpy(&outIntVar, array.data(), len_intVar);//memcpy(&outIntVar, array, len_intVar);//此行代码与上句通用
3.2. int[] 与 QByteArray 互转
[1] int[] 转 QByteArray
// int[] 转 QByteArray// int[] 转 QByteArrayint intVar[4] = {1,2,9,0};//初始化变量赋值QByteArray array;int len_intVar = sizeof(intVar);array.resize(len_intVar);//转换 int[] -> QByteArraymemcpy(array.data(), &intVar, len_intVar);
[2]QByteArray 转 int[]
// QByteArray 转 int[]// array 数据接上面int outIntVar[4];memcpy(&outIntVar, array.data(), len_intVar);//memcpy(&outIntVar, array, len_intVar);//此行代码与上句通用
4.QByteArray与float 以及float[] 的转换
其实完全可以参考第3节,int的用法.
4.1. float[] 与 QByteArray 互转
[1] float[] 转 QByteArray
// float[] 转 QByteArrayfloat fVar[4] = { 1.1, 2.3, 9.5, 0.2 };//初始化变量赋值QByteArray array;int len_fVar = sizeof(fVar); // 4*4 = 16 (一个float占4个字节)array.resize(len_intVar);memcpy(array.data(), &fVar, len_fVar);
[2]QByteArray 转 float[]
// QByteArray 转 float[]float outFvar[4];memcpy(&outIntVar, array.data(), len_fVar);//memcpy(&outFvar, array, len_fVar);//此行代码与上句通用
4.2. float 与 QByteArray 互转
可以安全参考int。
关于"QT中QByteArray与char、int、float之间的互相转化怎么实现"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"QT中QByteArray与char、int、float之间的互相转化怎么实现"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
数据
方式
之间
代码
知识
元素
内容
函数
变量
字符
数组
篇文章
类型
长度
参考
处理
安全
二进制
价值
传统
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库搭建与管理
财务手机app软件开发
梦幻手游服务器找不到区服
编程接口数据库
数据库安装无效
网络安全稳定用哪个网最好
网络安全数学基础陈
嵌入式软件开发的培训机构
逻辑软件开发语言
数据库字段扩展
哪个区服务器最多
网络安全教学反思文章
数据库的启动程序
数据库怎么快速删除关键字
苏州服务器pdu电源报价
关于网络安全的新闻感受
根据网络安全法的规定关机
马一鸣网络安全
网络安全法视频类app
音创服务器怎么安装网卡驱动
网络技术日报
今日头条的服务器供应商
lpi信号数据库介绍
软件开发业务和产品的区别
为什么选修数据库
可视化工具查出的数据库不全
富士康服务器冲压
龙华软件开发招应届毕业生
统信系统如何安装神通数据库
嵌入式软件开发arm