QByteArray转换为/来自unsigned char *

时间:2012-01-20 10:26:02

标签: qt type-conversion

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。

2 个答案:

答案 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?