Qt 关于字节流可否嵌套的一个实验

1.可否嵌套方案

1.1 概要

 * 需求:数据头+数据体+校验码+数据尾
 * 校验码的生成只与数据体相关
 * 可否通过QByteArray的嵌套实现这个功能呢,
 * 最终失败:
 * 理由一个char*的整体内存是无法再头部插入输入的。
 * 那么只能靠生成校验码的时候,将指针向后移动两位来实现

1.2 代码

#include <QCoreApplication>
#include <QDebug>
#include <QByteArray>
#include <QIODevice>struct Stu1 {unsigned short ushort1;char char1;
};/*** 需求:数据头+数据体+校验码+数据尾* 校验码的生成只与数据体相关* 可否通过QByteArray的嵌套实现这个功能呢,* 最终失败:* 理由一个char*的整体内存是无法再头部插入输入的。* 那么只能靠生成校验码的时候,将指针向后移动两位来实现*/
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QByteArray qas;Stu1 st;st.ushort1 = 5;st.char1 =6;QByteArray message2;QDataStream out2(&message2, QIODevice::WriteOnly);char char2 = 7;out2<<char2;qDebug()<<"message2:"<<message2.toStdString();QByteArray message;QDataStream out(&message, QIODevice::WriteOnly);out<<st.ushort1;out<<st.char1;qDebug()<<"message:"<<message.toStdString();QByteArray message3;QDataStream out3(&message3, QIODevice::WriteOnly);out3<<st.ushort1;out3<<message3;out3<<st.char1;qDebug()<<"message3:"<<message3.toStdString();message2.insert(0,st.ushort1);//message2.insert(message2.length()-1,st.char1);qDebug()<<"message2:"<<message2.toStdString();qDebug()<<"QByteArray test";return a.exec();
}

1.3 运行结果

message2: "\x07"
message: "\x00\x05\x06"
message3: "\x00\x05\x00\x00\x00\x02\x00\x05\x06"
message2: "\x05\x07"
QByteArray test

2.移动地址方案

2.1 概要

 * 需求:数据头+数据体+校验码+数据尾
 * 校验码的生成只与数据体相关
 * 可否通过QByteArray的嵌套实现这个功能呢,
 * 最终失败:
 * 理由一个char*的整体内存是无法再头部插入输入的。
 * 那么只能靠生成校验码的时候,将指针向后移动两位来实现

2.2 代码

#include <QCoreApplication>
#include <QDebug>
#include <QByteArray>
#include <QIODevice>struct Stu1 {unsigned short ushort1;char char1;
};/*** 需求:数据头+数据体+校验码+数据尾* 校验码的生成只与数据体相关* 可否通过QByteArray的嵌套实现这个功能呢,* 最终失败:* 理由一个char*的整体内存是无法再头部插入输入的。* 那么只能靠生成校验码的时候,将指针向后移动两位来实现*/
int main2(int argc, char *argv[])
{QCoreApplication a(argc, argv);QByteArray qas;Stu1 st;st.ushort1 = 5;st.char1 =6;QByteArray message2;QDataStream out2(&message2, QIODevice::WriteOnly);char char2 = 7;out2<<char2;qDebug()<<"message2:"<<message2.toStdString();QByteArray message;QDataStream out(&message, QIODevice::WriteOnly);out<<st.ushort1;out<<st.char1;qDebug()<<"message:"<<message.toStdString();QByteArray message3;QDataStream out3(&message3, QIODevice::WriteOnly);out3<<st.ushort1;out3<<message3;out3<<st.char1;qDebug()<<"message3:"<<message3.toStdString();message2.insert(0,st.ushort1);//message2.insert(message2.length()-1,st.char1);qDebug()<<"message2:"<<message2.toStdString();qDebug()<<"QByteArray test";return a.exec();
}

2.3 运行结果

Pointer address: 0x132d0164910
addr: 0x132d0164912
len: 2
addr[0]: 5
addr[1]: 6
QByteArray test

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/42702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

creature_equip_template

creature_equip_template CreatureID 链接 creature_template.entry ID creature 装备模板编号 一个 creature entry 可以有多个装备模板如有多个装备模板&#xff0c;从1开始依次递增1 ItemID1 - ItemID3 装备模板使用的装备id&#xff0c;取值参见 ItemSparse.db2 | Item.db2…

什么是数据分析?数据分析如何创造企业发挥价值?

数据分析是在具体的业务场景下&#xff0c;如何借助工具&#xff0c;通过数据解决问题的思路 数据底层的四大优势 1.可反复读取和使用 2.客观 3.量化 4.机器可处理 使用数据指导业务&#xff0c;基于数据量化生产 只要是基于量化的信息提升生产力&#xff0c;就是数据分析&a…

MySQL-18-mysql source 执行 sql 文件时中文乱码

拓展阅读 MySQL 00 View MySQL 01 Ruler mysql 日常开发规范 MySQL 02 truncate table 与 delete 清空表的区别和坑 MySQL 03 Expression 1 of ORDER BY clause is not in SELECT list,references column MySQL 04 EMOJI 表情与 UTF8MB4 的故事 MySQL 05 MySQL入门教程&a…

centos7|操作系统|升级openssl-1.0.2k到openssl-3.3.0

一、 前言&#xff1a; opensssl是什么软件&#xff1f;openssl的版本是怎样的&#xff1f;为什么需要升级openssl&#xff1f;如何升级openssl&#xff1f; 1、openssl是一个什么样软件&#xff1f; OpenSSL是一个开源的安全套接字层&#xff08;Secure Sockets Layer&…

MySQL8.0在windows下的下载安装及详细使用

下载mysql8.0二进制包 下载地址&#xff1a;MySQL :: Download MySQL Community Server 编辑my.ini配置文件 解压二进制包&#xff0c;新建/编辑my.ini配置文件(如果不存在则新建) [client] #客户端设置&#xff0c;即客户端默认的连接参数 # 设置mysql客户端连接服务端时…

Canvas:掌握颜色线条与图像文字设置

想象一下&#xff0c;用几行代码就能创造出如此逼真的图像和动画&#xff0c;仿佛将艺术与科技完美融合&#xff0c;前端开发的Canvas技术正是这个数字化时代中最具魔力的一环&#xff0c;它不仅仅是网页的一部分&#xff0c;更是一个无限创意的画布&#xff0c;一个让你的想象…

回溯 | Java | LeetCode 39, 40, 131 做题总结

Java Arrays.sort(数组) //排序 不讲究顺序的解答&#xff0c;都可以考虑一下排序是否可行。 39. 组合总和 错误解答 在写的时候需要注意&#xff0c;sum - candidates[i];很重要&#xff0c;也是回溯的一部分。 解答重复了。是因为回溯的for循环理解错了。 class Solutio…

Python StrEnum: 基本概念和使用场景

Python StrEnum: 基本概念和使用场景 什么是StrEnum?基本用法使用场景1. 配置选项2. API状态码3. 数据验证 注意事项结论 在Python编程中,枚举类型是一种非常有用的工具,可以用来定义一组命名常量。Python 3.4引入了Enum类,而在Python 3.11中,我们迎来了一个新的枚举类型 ——…

极域?去!

本文由Jzwalliser原创&#xff0c;发布在CSDN平台上&#xff0c;遵循CC 4.0 BY-SA协议。 因此&#xff0c;若需转载/引用本文&#xff0c;请注明作者并附原文链接&#xff0c;且禁止删除/修改本段文字。 违者必究&#xff0c;谢谢配合。 个人主页&#xff1a;blog.csdn.net/jzw…

使用OpenCV与PySide(PyQt)的视觉检测小项目练习

OpenCV 提供了丰富的图像处理和计算机视觉功能&#xff0c;可以实现各种复杂的图像处理任务&#xff0c;如目标检测、人脸识别、图像分割等。 PyQt(或PySide)是一个创建GUI应用程序的工具包&#xff0c;它是Python编程语言和Qt库的成功融合。Qt库是最强大的GUI库之一。Qt的快速…

【开放集目标检测】Grounding DINO

一、引言 论文&#xff1a; Grounding DINO: Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection 作者&#xff1a; IDEA 代码&#xff1a; Grounding DINO 注意&#xff1a; 该算法是在Swin Transformer、Deformable DETR、DINO基础上…

逆变器学习笔记(三)

DCDC电源芯片外围器件选型_dcdc的comp补偿-CSDN博客、 1.芯片的COMP引脚通常用于补偿网络&#xff1a; 芯片的COMP引脚通常用于补偿网络&#xff0c;在控制环路中发挥重要作用。COMP引脚接电容和电阻串联接地&#xff0c;主要是为了稳定控制环路、调整环路响应速度和滤波噪声…

Java 变量命名规则

在Java中&#xff0c;变量命名是一种重要的编码规范&#xff0c;良好的命名可以提高代码的可读性和维护性。以下是Java变量命名的规则和建议&#xff1a; ### Java变量命名规则&#xff1a; 1. **合法字符**&#xff1a; - 变量名可以包含字母、数字、美元符号 $ 和下划线…

java Lock接口

在 Java 中&#xff0c;Lock 接口的实现类ReentrantLock 类提供了比使用 synchronized 方法和代码块更广泛的锁定机制。 简单示例&#xff1a; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockExampl…

Kappa架构

1.Kappa架构介绍 Kappa架构由Jay Kreps提出&#xff0c;不同于Lambda同时计算和批计算并合并视图&#xff0c;Kappa只会通过流计算一条的数据链路计算并产生视图。Kappa同样采用了重新处理事件的原则&#xff0c;对于历史数据分析类的需求&#xff0c;Kappa要求数据的长期存储能…

关闭vue3中脑瘫的ESLine

在创建vue3的时候脑子一抽选了ESLine,然后这傻卵子ESLine老是给我报错 博主用的idea开发前端 ,纯粹是用不惯vscode 关闭idea中的ESLine,这个只是取消红色波浪线, 界面中的显示 第二步,在vue.config.js中添加 lintOnSave: false 到这里就ok了,其他的我试过了一点用没有

阿里云 OSS - 开通到使用、服务端签名直传(前后端代码 + 效果演示)

目录 开始 OSS 相关术语须知 阿里云 OSS 开通 阿里云 OSS 使用 官方文档教程 实战开发 阿里云 OSS 自动配置 环境配置 实战开发 服务端签名直传 概述 代码实现 开始 OSS 相关术语须知 中文 英文 说明 存储空间 Bucket 存储空间是您用于存储对象&#xff08;Ob…

C语言高阶技术点详解:深入理解位操作

位操作是C语言中一项强大的特性&#xff0c;它允许我们直接在二进制层面上操作数据。位操作在底层编程、加密、数据压缩和性能优化等领域有着广泛的应用。本文将详细探讨C语言中的位操作&#xff0c;结合代码案例&#xff0c;为你揭示背后的技术原理&#xff0c;帮助你更深入地…

使用cgroup对pgsql进行分库资源限制

系统&#xff1a;Centos7 pg版本&#xff1a;14.11 自建pgsql14中有很多个库&#xff0c;一个库对应一个租户&#xff0c;偶尔会出现单个租户执行慢sql影响全局的问题&#xff0c;目前官方也没有比较合适的处理方案或者插件 解决方案&#xff1a; 因为pgsql是多进程应用&…

DB-GPT-PaperReading

DB-GPT: Empowering Database Interactions with Private Large Language Models 1. 基本介绍 DB-GPT 旨在理解自然语言查询,提供上下文感知响应,并生成高精度的复杂 SQL 查询,使其成为从新手到专家的用户不可或缺的工具。DB-GPT 的核心创新在于其私有 LLM 技术,该技术在…