QT中QByteArray与char、int、float之间的互相转化怎么实现
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要介绍了QT中QByteArray与char、int、float之间的互相转化怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇QT中QByteArray与
千家信息网最后更新 2025年11月06日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安全错误
数据库的锁怎样保障安全
网络安全过滤软件
怎么建立网页数据库
web前端和网络安全
电脑集成数据库
语音存储及平台管理服务器
查询 数据库 内存信息吗
视频聊天收费软件开发
路由器虚拟服务器调节
中国5g网络安全吗
太平洋网络技术公司
上海宏图空间网络技术
数据库表单控件设计
网页保存数据库吗
吉林pdu服务器专用电源采购
官网服务器有什么用
未来教育网络技术上级题库
电信的网络技术工程有限公司
vr存储服务器
怎么连接网站服务器
网络安全实施计划工作方案
心理学图书馆数据库
网络安全宣传手抄报模板
数据库power函数使用方法
软件开发都有职称吗
计算机网络技术理论考试
证券 软件开发平台
河北 马全通网络技术
视频流软件开发
可以作为副业的网络技术
sap 服务器安全证书出现问题