Qt之字节数组类QByteArray

子节数组类QByteArray字节数组类QByteArray提供一个字节数组,用于存储原始字节。使用QByteArray类比使用 char*更方便。该类在串口通信中经常被使用,因为串口通信数据都是一个一个的 8 位字节流。

初始化通常有两种方法可以初始化 QByteArray 类的对象

第一种方法是通过 const char *将其传递给构造函数。例如,以下代码创建一个大小为 5个字节的字节数组,数据为"Hello":QByteArray ba ("Hello");

虽然我们定义了5个字节长度的字节数组对象,索引范围从0到4,但是系统自动会在字节数组对象结尾添加一个"0字符,这是为了某些场合使用方便。所以,我们在索引5的位置可以得到字符数据"0',比如:

复制代码
QByteArray bal ("Hello");
if('\0'==ba1[5])
printf("bal[5]=\'\\٥\'\n"); //这行会输出

第二种方法是使用 resize()设置数组的大小,并初始化每个数组元素。

复制代码
QByteArray ba;
ba.resize(6);
ba[0] = 0x3c;
ba [1] = 0xb8;
ba[2] = 0x64;
ba [3]0×18;
ba [4] = 0xca;

QByteArray 类使用从 0 开始的索引值,就像 C++数组一样。在调用 resize)后,新分配的字节具有未定义的值。要将所有字节设置为特定值,可以调用fillo函数,该函数的原型声明如下:

复制代码
QByteArray &QByteArray::fill (char ch, int size = -1)

其中,参数 ch 是要给字节数组设置的字符;size 如果不是-1,就表示重新要为字节数组开辟的空间大小。比如:

复制代码
QByteArray ba("Istambul");
ba.fill('o');
// ba == "oooooooo"
ba.fill('x', 2);
// ba == "xx"

第一次调用 fill()函数后,ba 所有空间的内容都是字符o 了;第二次调用 fill()函数后,因为fill()函数的第二个参数size是2,所以会重新调整 ba的空间大小,变为2个字节,而且内容重新设置为"XX"。

相关推荐
+VX:Fegn08952 分钟前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
阿里嘎多学长41 分钟前
2026-09-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
江湖人称菠萝包2 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter9-Qt Charts
笔记·qt·qt5
扶尔魔ocy2 小时前
【QT android】环境安装及第一个QT项目
qt·andriod开发
weixin_307779133 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
2601_966949653 小时前
为什么量化回测中 for 循环比 DataFrame 慢三个数量级?从向量化原理讲起
开发语言·python·pandas·股票数据·quantdash
边境悍匪4 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring
我的xiaodoujiao4 小时前
Django 基础知识详细图文教程 9-Django 模板引擎 2
开发语言·数据库·后端·django
菜鸟~noob2334 小时前
【太空电子战】从CCS到Meadowlands:反通信系统的二十年演进史【含matlab代码】
开发语言·matlab
江湖人称菠萝包5 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter10-Data Visualization
笔记·qt·qt5