1、QByteArray类
提供一个字节数组,QByteArray可用于存储原始字节(包括“\ 0” )和传统的8位 “\ 0” 端接字符串。使用QByteArray比使用const char 更方便。除了QByteArray之外,Qt还提供了QString类来存储字符串数据。对于大多数用途,QString是您要使用的类。它存储16位Unicode字符,使您可以轻松地在应用程序中存储非ASCII /非拉丁字符。此外,QSt API在Qt API中始终使用。
QByteArray适合的两个主要情况是当您需要存储原始二进制数据,并且当内存保护至关重要时(例如,使用嵌入式Linux的Qt)
初始化QByteArray的一种方法是const char *将其传递给其构造函数。例如,以下代码创建一个大小为5的字节数组,
其中包含数据“Hello”:
QByteArray ba("Hello");
虽然size()为5,但是字节数组在最后还会保留一个额外的’\ 0’字符,
以便如果使用一个函数来请求指向底层数据的指针(例如调用data()),那么指出的数据保证被’\ 0’终止。
另一种方法是使用resize()设置数组的大小,并初始化每个字节的数据字节。
QByteArray使用基于0的索引,就像C ++数组一样。 要访问特定索引位置的字节,可以使用operator[] ()在非 常量字节数组上,operator 返回一个可以在赋值左侧使用的字节的引用。例如:
QByteArray ba;
ba.resize(5);
ba[0] = 0x3c;
ba[1] = 0xb8;
ba[2] = 0x64;
ba[3] = 0x18;