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"。

相关推荐
萧瑟余晖16 分钟前
Java深入解析篇十七之SpringCloud
java·开发语言
ttod_qzstudio1 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
我是小灰灰吖2 小时前
QT在线安装器使用指南:从下载到配置完整教程
linux·qt·ubuntu
萧瑟余晖2 小时前
Java深入解析篇十七之Spring Security
java·开发语言·spring
C++ 老炮儿的技术栈4 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
二十雨辰5 小时前
[Java]-Spring面试题
java·开发语言
_oP_i5 小时前
python 后缀 mjs文件
开发语言·python
萧瑟余晖5 小时前
Java深入解析篇二十二之虚拟线程
java·开发语言
油丶酸萝卜别吃6 小时前
Java 集合类全景介绍
java·开发语言
Iruoyaoxh6 小时前
类和对象~
开发语言·c++