QT中QByteArray与char、int、float之间的互相转化怎么实现
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍了QT中QByteArray与char、int、float之间的互相转化怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇QT中QByteArray与
千家信息网最后更新 2025年01月16日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安全错误
数据库的锁怎样保障安全
造价数据库的主要需求
软件开发反思与改进
广州戴尔霄龙服务器方案
修改数据库硬件和软件的区别
绝地求生端游进游戏服务器崩溃
三大数据库文献
从事软件开发工作翻译
信息技术导论之网络安全导论
淮安大容量服务器供应商家
机架式服务器有多重
上海钱拓网络技术有限公司电话
数据库sql2012试题
网络安全周来了怎么办
数据库 加号 没效果
泉州网络服务器
ps4战争前线怎么连接服务器
常州网络安全审计系统咨询辅导
向领导写软件开发申请
url表示数据库资源
什么是网络技术型号
泰拉瑞亚踢出服务器
软件开发由哪个阶段构成
北京飞腾先锋网络技术有限公司
关于QQ网络安全的基本知识
网络安全排查问题
浦东新区数据软件开发程序
网络技术助理的工作内容
c css 软件开发
唐山新零售软件开发
自学软考网络安全工程师