QT中QByteArray与char、int、float之间的互相转化怎么实现
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了QT中QByteArray与char、int、float之间的互相转化怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇QT中QByteArray与
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
天津市摩尔互联网科技
新华互联网科技
互联网电商科技
互联网科技资迅
互联网科技未来
没上市的科技互联网公司
互联网科技集团
上海挚品互联网科技
互联网科技股票
互联网科技英文翻译
广州慧亚互联网科技怎么样
互联网大会黑科技排名
互联网为啥属于高科技
迪庆互联网科技招生
阿里互联网科技企业
互联网营销推广黑科技
工业互联网科技创业
马化腾互联网科技教学
唐山双旺合互联网科技产业园
现代科技的标志之一的互联网
互联网科技活动banner
互联网金融 金融科技
华中科技大学互联网
互联网 新科技
互联网公司会议桌创意科技软装饰
隆华科技工业互联网
厦门比较好的科技互联网公司
赶超互联网科技 微信多开
福州德业互联网科技
互联网大会出现的黑科技