Преобразование массива uint8_t в строку NSString - PullRequest
5 голосов
/ 05 июля 2011

Как я могу повлиять на массив uint8_t (см. decryptedBuffer ниже) на NSString?

uint8_t *decryptedBuffer;

NSString *cle2=[NSString stringWithUTF8String:decryptedBuffer];

NSString *str2=[player.name AES256DecryptWithKey:cle2]; 
NSLog(str2);


free(plainBuffer);
free(cipherBuffer);
free(decryptedBuffer);

Ответы [ 2 ]

16 голосов
/ 05 июля 2011

uint8_t * - это просто строка байтов, совместимая с char *, поэтому вы должны просто иметь возможность передать приведенный указатель на stringWithUTF8String, предполагая, что дешифрованная строка - это UTF-8, и она заканчивается на NULL:

NSString *s = [NSString stringWithUTF8String:(char *)decryptedBuffer];

Если данные не заканчиваются NULL, вы можете использовать это:

NSString *s = [[[NSString alloc] initWithBytes:decryptedBuffer
                                 length:length_of_buffer
                                 encoding:NSUTF8StringEncoding] autorelease];
0 голосов
/ 05 июля 2011

decryptedBuffer - это int (uint8_t), строка NSString stringWithUTF8String работает только со строками, а не с целыми числами. Я думаю, что нашел то, что вам нужно: http://lists.apple.com/archives/cocoa-dev/2004/Apr/msg01437.html

Этот человек использовал этот синтаксис:

    NSString *theDigitsIWant = [[NSNumber numberWithInt:x] stringValue];

Итак, вы должны сделать это:

    NSString *cle2 = [[NSNumber numberWithInt:decryptedBuffer] stringValue];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...