QByteArray inArray = " ... ";
unsigned char *in = convert1(inArray);
unsigned char *out;
someFunction(in, out);
QByteArray outArray = convert2(out);
问题是我如何正确地进行这些转换(convert1和convert2)。 我无法更改someFunction(unsigned char *,unsigned char *),但我必须在这里使用QByteArray。
答案 0 :(得分:6)
Qt非常棒docs,你应该使用它们。
如果someFunction没有修改或存储指向数据的指针,你可以使用它:
QByteArray inArray = " ... ";
unsigned char *out;
someFunction((unsigned char*)(inArray.data()), out);
QByteArray outArray((char*)out);
否则你必须制作QByteArray :: data()返回的char *的深层副本(参见代码片段的文档)。
答案 1 :(得分:0)
如果someFunction
采用const char*
args,则只需在ConstData()
类中使用data()
或QByteArray
。
如果您需要char*
,则可以使用strdup()。这种方法正在这样做
char *strdup (const char *s) {
char *d = malloc (strlen (s) + 1); // Space for length plus nul
if (d == NULL) return NULL; // No memory
strcpy (d,s); // Copy the characters
return d; // Return the new string
}
此处有更多信息:strdup() - what does it do in C?