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

相关推荐
用户805533698033 小时前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner3 小时前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz5 天前
QML Hello World 入门示例
qt
xcyxiner8 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner9 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner9 天前
DicomViewer (添加模型类)3
qt
xcyxiner10 天前
DicomViewer (目录调整) 2
qt
xcyxiner10 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00612 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术12 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript