QByteArray конвертировать в / из неподписанного символа * - PullRequest
2 голосов
/ 20 января 2012
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 ]

6 голосов
/ 20 января 2012

Qt имеет действительно отличные документы , вы должны их использовать.

Если someFunction не изменяет или не сохраняет указатель на данные, вы можете использовать это:

QByteArray inArray = " ... ";
unsigned char *out;
someFunction((unsigned char*)(inArray.data()), out);
QByteArray outArray((char*)out);

В противном случае вы должны сделать глубокую копию символа *, возвращаемого QByteArray :: data () (см. Документацию для фрагмента кода).

0 голосов
/ 09 ноября 2013

если someFunction принимает const char* аргументов, тогда просто используйте 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 () - что он делает в C?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...