QByteArray使用详解

发布于:2024-06-20 ⋅ 阅读:(137) ⋅ 点赞:(0)


QByteArray 是 Qt 提供的一个字节数组类,用于处理二进制数据。它可以存储原始字节,并提供了一系列方法来操作和转换这些字节数据。 QByteArray 在处理文本和二进制文件、网络数据传输等场景中非常有用。

一、QByteArray创建和初始化

1.1 创建空的 QByteArray

QByteArray byteArray;

1.2 使用初始数据创建 QByteArray

QByteArray byteArray("Hello, World!");
QByteArray byteArrayWithSize(10, 'a'); // 创建一个大小为 10 的字节数组,所有字节初始化为 'a'

二、QByteArray基本操作

2.1 QByteArray获取字节数组的大小 (size)

int size = byteArray.size();

2.2 QByteArray检查是否为空 (isEmpty)

bool empty = byteArray.isEmpty();

2.3 QByteArray访问和修改数据

使用索引访问和修改数据:

char ch = byteArray[0]; // 访问第一个字节
byteArray[0] = 'H'; // 修改第一个字节

2.4 QByteArray添加数据

在数组末尾添加数据:

byteArray.append('!');
byteArray.append(" More text.");

2.5 QByteArray插入数据

在指定位置插入数据:

byteArray.insert(5, ", inserted text");

2.6 QByteArray删除数据

删除指定位置的字节:

byteArray.remove(5, 9); // 从索引 5 开始删除 9 个字节

2.7 QByteArray清空数据

byteArray.clear();

三、转换和编码

3.1 QByteArray转换为QString字符串

QByteArray 转换为 QString,可以指定编码:

QString str = QString::fromUtf8(byteArray);

3.2 QString指定编码UTF8转为QByteArray

QString 转换为 QByteArray,可以指定编码utf8:

QByteArray byteArray = str.toUtf8();

QString 转换为 QByteArray,可以指定编码Latin1:

QByteArray byteArray = str.toLatin1();

3.3 QByteArray大小写转换

  • 转为大写
QByteArray test;
QByteArray byteArray = test.toUpper();
  • 转为小写
QByteArray test;
QByteArray byteArray = test.toLower()

3.4 Base64 编码和解码

QByteArray 编码为 Base64:

QByteArray base64Encoded = byteArray.toBase64();

将 Base64 编码的 QByteArray 解码:

QByteArray decoded = QByteArray::fromBase64(base64Encoded);

3.5 QByteArray十六进制编码和解码

QByteArray 编码为十六进制:

QByteArray hexEncoded = byteArray.toHex();

将十六进制编码的 QByteArray 解码:

QByteArray decoded = QByteArray::fromHex(hexEncoded);

四、其他常用操作

4.1 比较 QByteArray

比较两个 QByteArray

QByteArray byteArray1("Hello");
QByteArray byteArray2("World");
bool isEqual = (byteArray1 == byteArray2); // false

4.2 查找子串

QByteArray 中查找子串的位置:

int index = byteArray.indexOf("World"); // 返回子串 "World" 的起始位置

4.3 替换子串

QByteArray 中替换子串:

byteArray.replace("World", "Qt");
  • 示例代码

下面是一个完整的示例,演示了 QByteArray 的基本用法:

#include <QCoreApplication>
#include <QByteArray>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 创建并初始化 QByteArray
    QByteArray byteArray("Hello, World!");

    // 获取大小和检查是否为空
    qDebug() << "Size:" << byteArray.size();
    qDebug() << "Is empty:" << byteArray.isEmpty();

    // 访问和修改数据
    byteArray[0] = 'h';
    qDebug() << "Modified byteArray:" << byteArray;

    // 添加和插入数据
    byteArray.append(" More text.");
    byteArray.insert(5, ", inserted text");
    qDebug() << "After append and insert:" << byteArray;

    // 删除数据
    byteArray.remove(5, 9);
    qDebug() << "After remove:" << byteArray;

    // 转换和编码
    QString str = QString::fromUtf8(byteArray);
    qDebug() << "Converted to QString:" << str;

    QByteArray base64Encoded = byteArray.toBase64();
    qDebug() << "Base64 encoded:" << base64Encoded;
    QByteArray decoded = QByteArray::fromBase64(base64Encoded);
    qDebug() << "Base64 decoded:" << decoded;

    QByteArray hexEncoded = byteArray.toHex();
    qDebug() << "Hex encoded:" << hexEncoded;
    decoded = QByteArray::fromHex(hexEncoded);
    qDebug() << "Hex decoded:" << decoded;

    // 比较 QByteArray
    QByteArray byteArray1("Hello");
    QByteArray byteArray2("World");
    bool isEqual = (byteArray1 == byteArray2);
    qDebug() << "Are byteArrays equal:" << isEqual;

    // 查找和替换子串
    int index = byteArray.indexOf("Qt");
    qDebug() << "Index of 'Qt':" << index;
    byteArray.replace("Qt", "C++");
    qDebug() << "After replace:" << byteArray;

    return a.exec();
}

总结

QByteArray 是一个非常强大的工具,用于处理二进制数据和字符串转换。它在网络编程、文件处理、编码和解码等场景中都有广泛的应用。通过掌握 QByteArray 的基本操作和常用功能,您可以更高效地处理 Qt 中的字节数据。

其他QT文章
1. QT开发环境安装以配置。
2. QT线段画板实战
3. 半小时玩转QT桌面系统托盘(含托盘消息)
4. QT入门开发一个时钟
5. 半小时教你做大转盘游戏(QT篇)
6. 手把手教你制作【带吸附效果的线段绘制】(QT)
7. 手把手教你开发-滚动效果号码抽奖(QT)
8. 100行代码实现贪吃蛇小游戏
9.C++实现《扫雷》游戏(入门经典)
10. svg转图片工具开发
11. Qt网路与通信(获取本机网络信息)
12. Qt网路与通信(UDP客户与服务)
13. Qt网络与通信(TCP聊天室)
14. Qt多线程以及线程池
15. Qt散点图、折线图、柱状图、盒须图、饼状图、雷达图开发实例
16. 取色器(QT)
17. MQTT客户端入门开发
18.QT文件上传带进度条实例(含源码)
19. Qt音乐播放器开发实例(可毕设含源码)


网站公告

今日签到

点亮在社区的每一天
去签到