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

相关推荐
这是个栗子1 小时前
前端开发中的常用工具函数(八)
开发语言·前端·javascript
凤凰院凶涛QAQ1 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
研☆香1 小时前
为什么变量声明在赋值前也能使用?—— 深入理解 JavaScript 变量提升与作用域
开发语言·前端·javascript
右耳朵猫AI1 小时前
PHP周刊2026W28 | 安全更新、Laravel 13.18、Twig 3.28
开发语言·php·laravel
second601 小时前
第一部分:快速上手 —— 建立 C++ 基本语法与编程范式
开发语言·c++
郝学胜-神的一滴2 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
bksczm2 小时前
linux之线程概念和控制
linux·开发语言·c++
Quz2 小时前
QML Label 完整用法与 Text 组件选型
前端·qt
JackieZhengChina2 小时前
零依赖轻量级JS悬浮提示插件title2tip-js的使用教程
开发语言·javascript·ecmascript
hehelm2 小时前
Linux网络编程—TCP字典翻译系统
linux·开发语言·网络·c++·tcp/ip