如何将数组转换为QByteArray
How to convert an array into QByteArray?
我想把一个数组转换成QByteArray在Qt.有人能解释这个概念吗?
QByteArray
有一个这样做的构造函数。
使用方法:
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));
}
上面的代码将把组成int的字节插入到QByteArray
中。但是要小心,因为此时索引QByteArray
将不会返回整数,而是返回组成它们的字节。
要转换QString(这不是您要求的,而是添加了要求它的注释),请使用QString
的适当成员函数之一:
QByteArray ba = str.toLocal8bit();
QByteArray ba2 = str.toLatin1();
QByteArray ba3 = str.toUtf8();
QByteArray ba4 = str.toAscii();
要决定使用哪一个,必须知道字符串的编码。要在编码之间进行转换,使用QTextCodec
一个什么的数组?假设您指的是一个以空结尾的字符数组:
#include <QtCore>
int main(int argc, char *argv[])
{
const char* myArray = "Hello World!";
QByteArray myByteArray = QByteArray(myArray);
}
为了在QByteArray中存储数组,我采用了下面描述的方法:http://smartqt.blogspot.ru/2014/05/how-to-convert-struct-in-and-from.html
我的int数组版本是
QByteArray serialize(int* ar, int ar_size)
{
QByteArray result;
QDataStream stream (&result, QIODevice::WriteOnly);
stream<<ar_size;
for (int i=0; i<ar_size; i++)
stream<<ar[i];
return result;
}
void deserialize(const QByteArray& byteArray)
{
QDataStream stream(byteArray);
int ar_size=0;
stream>>ar_size;
int* ar = new int[ar_size];
for (int i=0; i<ar_size;i++)
stream>>ar[i];
}
干杯!
相关文章:
- 如何将QByteArray转换为std::istream或std::ifstream?
- 将 QByteArray 转换为无符号短:不符合预期
- 如何将小端格式的QByteArray转换为无符号长整型
- 有没有办法"QByteArray"变量数据直接放入变量"int"而无需强制转换?
- 如何在不将其转换为 ASCII 字符的情况下显示 QByteArray 的十六进制值
- 将 QByteArray 从大端序转换为小端序
- 将 CRC uint 转换为 QByteArray QT - C++
- QByteArray 和 QString 转换的问题
- QByteArray 转换为十六进制失败
- 如何将QByteArray转换为QString?
- QT中的QByTearray转换
- QByTearray进行INT转换
- qbyTearray转换为char(不是char*或constchar*)
- 将 QByteArray 转换为“long”会为相同的输入输出不同的结果
- 将int转换为Qt中的QByteArray
- Qt:将QPixmap保存到std::vector<无符号字符>-或者将QByteArray转换为std::
- 问如何将QByteArray转换为struct
- 如何将 QByteArray 转换为带有分隔符"-"的 QString?
- 将QString/QByteArray转换为科学符号qt
- 将QByteArray转换为整数