gpt4 book ai didi

c++ - 如何将数组转换为 QByteArray?

转载 作者:行者123 更新时间:2023-11-28 01:01:41 26 4
gpt4 key购买 nike

我想在 Qt 中将数组转换为 QByteArray。有人可以解释这个概念吗?请举例说明。

最佳答案

QByteArray 有一个 constructor就是这样做的。

这是如何使用它:

const char* data; int size; // these variables should be correctly set to your array and size
QByteArray ba(data, size);

我为数据使用了一个指针,但是数组在作为参数传递时会衰减为指针,所以它是一样的。此构造函数将对数据进行深拷贝。这意味着它只会获得它制作的拷贝的所有权,如果您使用的数据是动态分配的,则可能需要重新分配。

对于 char 以外的其他类型的数组,您实际上是在进行序列化:

int data[30];

for (int i = 0; i < 30; ++i)
{
ba.append((const char*)(data + i), sizeof(int));
}

上面的代码会将构成整数的字节插入到 QByteArray 中。不过要小心,因为此时索引 QByteArray 不会返回整数,而是返回它们组成的字节。

转换 QString (这不是你问的,而是添加了一条评论询问它)使用 QString 的适当成员函数之一:

QByteArray ba = str.toLocal8bit();
QByteArray ba2 = str.toLatin1();
QByteArray ba3 = str.toUtf8();
QByteArray ba4 = str.toAscii();

要决定使用哪一个,您必须知道字符串的编码。要在编码之间进行转换,请使用 QTextCodec

关于c++ - 如何将数组转换为 QByteArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8396620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com