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.mfbz.cn/a/784441.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux指令练习

二、touch、vi练习&#xff1a; 1、在root家目录下创建目录A1和B1 2、进入B1下同时创建三个文件m1, m2 , n1&#xff0c;单独创建目录N1 3、进入到A1目录中分别创建一个文件t1,k2&#xff0c;同时创建目录F1&#xff0c;F2 4、删除B1下的所有1结尾的文件或者目录 5、删除A1目录…

容易涨粉的视频素材在哪找啊?爆款涨粉的视频素材网站有这几个

亲爱的读者&#xff0c;大家好&#xff01;今天我们要探讨一个至关重要的问题&#xff1a;在充满竞争的视觉时代&#xff0c;如何使自己的短视频脱颖而出并吸引更多粉丝&#xff1f;关键在于使用那些既酷炫又高质量的视频素材&#xff01;下面就向大家推荐几个顶级视频素材网站…

【分布式系统】Filebeat+Kafka+ELK 的服务部署

目录 一.实验准备 二.配置部署 Filebeat 三.配置Logstash 四.验证 一.实验准备 结合之前的博客中的实验 主机名ip地址主要软件es01192.168.80.101ElasticSearches02192.168.80.102ElasticSearches03192.168.80.103ElasticSearch、Kibananginx01192.168.80.104nginx、Logs…

vue对axios进行请求响应封装

一、原因 像是在一些业务逻辑上&#xff0c;比如需要在请求之前展示loading效果&#xff0c;或者在登录的时候判断身份信息&#xff08;token&#xff09;等信息有没有过期&#xff0c;再者根据服务器响应回来的code码进行相应的提示信息。等等在请求之前&#xff0c;之后做的一…

前端面试题23(css3)

关于CSS3的面试题&#xff0c;我们可以从多个维度来探讨&#xff0c;包括但不限于选择器、盒模型、布局技术、动画与过渡、响应式设计等。下面我会列举一些典型的CSS3面试问题&#xff0c;并尽可能提供详细的解答或示例代码。 1. CSS3中新增了哪些选择器&#xff1f; 答案: C…

Spring Boot集成rmi快速入门demo

1.什么是rmi&#xff1f; RMI&#xff08;Remote Method Invocation&#xff09;即远程方法调用&#xff0c;是分布式编程中的一个基本思想。实现远程方法调用的技术有很多&#xff0c;比如CORBA、WebService&#xff0c;这两种都是独立于各个编程语言的。 而Java RMI是专为Ja…

DNF手游攻略:云手机辅助刷副本!内置辅助工具!

DNF手游是一款备受玩家喜爱的角色扮演类游戏&#xff0c;以其独特的地下城探险和多样化的装备系统而闻名。玩家需要通过不断的挑战和升级&#xff0c;逐步增强自己的角色实力&#xff0c;最终完成各种高难度的副本任务。游戏的核心玩法包括打怪、刷装备、升级技能等。 游戏辅助…

python特征相关性可视化分析 - sns.pairplot

seaborn 是一个基于 matplotlib 的 Python 数据可视化库&#xff0c;提供了更高层次的接口来绘制有吸引力的统计图形。pairplot 是 seaborn 中的一个函数&#xff0c;用于绘制数据集中多个变量之间的成对关系图。 基本用法 pairplot 函数可以快速地对数据集中的所有数值变量进…

如何优化 PostgreSQL 中对于树形结构数据的查询?

文章目录 一、数据模型选择&#xff08;一&#xff09;邻接表模型&#xff08;二&#xff09;路径枚举模型&#xff08;三&#xff09;嵌套集模型 二、索引策略&#xff08;一&#xff09;对于邻接表模型&#xff08;二&#xff09;对于路径枚举模型&#xff08;三&#xff09;…

信息技术课堂纪律管理:从混乱到秩序的智慧转型

引言&#xff1a; 在信息爆炸的时代&#xff0c;信息技术课程如同一把开启未来世界大门的钥匙&#xff0c;为学生们搭建起探索科技奥秘的桥梁。然而&#xff0c;面对着屏幕背后的无限诱惑&#xff0c;维持课堂纪律&#xff0c;确保学生们专注于学习&#xff0c;成为了每位信息…

[C++]入门基础(1)

Hello大家好&#xff0c;今天通过本篇文章&#xff0c;我们来初步学习C&#xff0c;C可以说是对C语言的一个升级&#xff0c;我们会一步一步的由浅入深的学习C。 目录 1.第一个C程序 2.命名空间 2.1 命名空间出现的意义 2.2 namespace的定义 2.3 命名空间的使用 3.C输入…

【Java系列】深入解析 Lambda表达式

简化这个代码 这个就是Lambda表达式,可以简化匿名内部类的写法 package lambda;public class demo2 {public static void main(String[] args) {//第二个参数是一个接口,所以我们在调用方法的时候,需要传递这个接口的实现类对象--接口多态// 但是这个实现类,我只要用一次,所以我…

C++基础(十二):string类

这一篇博客&#xff0c;我们正式进入STL中的容器的字符串类的学习&#xff0c;C标准模板库&#xff08;STL&#xff09;中的std::string类是一个用于表示和操作字符串的类。它封装了动态分配的字符数组&#xff0c;提供了丰富的成员函数来进行字符串的操作&#xff0c;例如拼接…

身边的故事(十五):阿文的故事:再消失

物镜人非&#xff0c;沧海桑田。像我们这些普通的凡人&#xff0c;哪有什么试错的机会&#xff0c;每走一步都是如履薄冰&#xff0c;小心谨慎&#xff0c;错一步可能就会万劫不复。唉&#xff0c;如果...唉...哪有什么如果... 阿文的房子很快装修完成&#xff0c;入新房那天就…

世界商用飞机机型大全-使用Java抓取FlightAware后的答案

目录 前言 一、数据说明 1、实时航班飞机机型数据 2、网页结构分析 二、使用Java进行信息抓取 1、定义页面PageVO对象 2、爬取属性定义 3、启动信息抓取组件 三、成果分析 1、商业飞行的飞机机型的种类 2、飞机种类排名前十名 3、航班数排名后十名 4、看中国国产大飞…

Typora篇-忍痛开启

语雀专业会员即将到期, 我看着99元的学费款, 我决定重新用回Typora。 虽然里面有一些文件但是我还是舍不得ಥ_ಥ 99元巨款。 下面开启我的Typora整活历程&#xff0c; 大家有什么好用的插件快捷方式一起来分享啊。

Profibus转Modbus模块连SmartPLC接汇川630伺服案例

一、环境&#xff1a;Modbus转Profibus模块&#xff08;XD-MDPB100)是一种通讯协议转换器&#xff0c;能够实现Modbus 协议与Profibus-DP协议的信息共享。汇川630伺服作为一种先进的运动控制设备&#xff0c;其平稳性和准确性获得了充分肯定。本文将详细分析怎么使用Profibus转…

U盘管理软件有哪些?3款好用的软件亲测有效!

在数字化办公与数据交换日益频繁的今天&#xff0c;U盘作为便携的存储设备&#xff0c;其重要性不言而喻。 然而&#xff0c;U盘的使用也带来了数据泄露、病毒感染等安全隐患。为了有效管理U盘&#xff0c;确保数据安全与合规性&#xff0c;市场上涌现出了众多U盘管理软件。 小…

代码随想录(day1)二分法

if语句的基本语法 if 要判断的条件: 条件成立的时候&#xff0c;要做的事举例&#xff1a; if nums[middle]<target:leftmiddle1 while语句的基本语法&#xff1a; while 判断条件(condition)&#xff1a;执行语句(statements)举例&#xff1a; while left<right:midd…

ctfshow web入门 nodejs web334--web337

web334 有个文件下载之后改后缀为zip加压就可以得到两个文件 一个文件类似于index.php 还有一个就是登录密码登录成功就有flag username:ctfshow password:123456因为 return name!CTFSHOW && item.username name.toUpperCase() && item.password passwor…