QByteArray转换为/来自unsigned char*

Edd*_*die 2 qt type-conversion

QByteArray inArray = " ... ";
unsigned char *in = convert1(inArray);
unsigned char *out;
someFunction(in, out);
QByteArray outArray = convert2(out);
Run Code Online (Sandbox Code Playgroud)

问题是如何正确地进行这些转换(convert1和convert2).我无法更改someFunction(unsigned char*,unsigned char*),但我必须在这里使用QByteArray.

cha*_*lup 6

Qt有很棒的文档,你应该使用它们.

如果someFunction不修改或存储指向数据的指针,您可以使用:

QByteArray inArray = " ... ";
unsigned char *out;
someFunction((unsigned char*)(inArray.data()), out);
QByteArray outArray((char*)out);
Run Code Online (Sandbox Code Playgroud)

否则,您必须对QByteArray :: data()返回的char*进行深层复制(请参阅代码片段的文档).