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

相关推荐
GfovikS0610010 小时前
C++中的函数式编程
开发语言·c++·算法
2401_8579182910 小时前
C++中的构建器模式
开发语言·c++·算法
酉鬼女又兒10 小时前
零基础快速入门前端JavaScript Array 常用方法详解与实战(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·chrome·蓝桥杯
小罗和阿泽10 小时前
GUI 自动化测试 pywinauto测试框架
开发语言·python·功能测试·测试工具·pytest
小杍随笔11 小时前
【Rust 语言编程知识与应用:元编程详解】
开发语言·后端·rust
gCode Teacher 格码致知11 小时前
Javascript提高:JavaScript Promise 超通俗解释-由Deepseek产生
开发语言·javascript
小江的记录本11 小时前
【Java】Java核心关键字:final、static、volatile、synchronized、transient(附《面试高频考点》)
java·开发语言·spring boot·后端·sql·spring·面试
齐鲁大虾11 小时前
VC++ 如何获取打印机的脱机/连接状态
开发语言·c++·获取打印机状态
2301_8073671911 小时前
Win10开机自启动怎么设置?关闭开机启动6大方法
开发语言·python·pygame
羊小猪~~11 小时前
【QT】--QWIdget与QDialog
开发语言·数据库·c++·后端·qt·求职招聘