2011-07-19 13 views
10

Mam problem podczas próby przekonwertowania NSString na NSData i na odwrót. Próbuję przechowywać zaszyfrowany ciąg do mojej bazy danych. Do tego używam algorytmu AES. Teraz to, co robię jest zostanę szyfrowane NSData i jestem przekształcając to NSString stosując następujący:Konwersja NSString na NSData i vice versa

// Not woking 
NSString *strTemp = [[NSString alloc] initWithData:encData encoding:NSUTF8StringEncoding]; 

// Working 
NSString *strTemp = [[NSString alloc] initWithData:encData encoding:NSASCIIStringEncoding]; 

Dlaczego NSData nie jest konwersja podczas korzystania NSUTF8StringEncoding. W ten sam sposób, gdy próbuję przekonwertować ciąg dostał przez NSASCIIStringEncoding używając:

// Not working 
[strTemp dataUsingEncoding:NSASCIIStringEncoding]; 

// Working 
[strTemp dataUsingEncoding:NSUTF8StringEncoding]; 

NSASCIIStringEncoding Dlaczego nie działa podczas konwersji NSString do NSData?

Odpowiedz

27

NSString do NSData:

NSString* str= @"teststring"; 
NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding]; 

NSData do NSString:

NSString* newStr = [[NSString alloc] initWithData:theData 
             encoding:NSUTF8StringEncoding]; 
+0

To jest to, co robię w moim pierwszym spinit kodu .. ale uzyskanie zerowej ciąg –

+0

możesz podać więcej kodu? – Maulik

+0

kod jest całkowity tutaj ... Mam ciąg I konwertuje go w danych przy użyciu '[strTemp dataUsingEncoding: NSUTF8StringEncoding]' działa, ale '[strTemp dataUsingEncoding: NSASCIIStringEncoding]' nie działa podobnie dane otrzymałem przy użyciu '[strTemp dataUsingEncoding : NSUTF8StringEncoding] 'Konwertuję z powrotem na ciąg znaków przy użyciu' [[NSString alloc] initWithData: encData encoding: NSASCIIStringEncoding] 'działa, ale' [[NSString alloc] initWithData: encData encoding: NSUTF8StringEncoding] 'is not. Tak więc za każdym razem, gdy następuje konwersja, używam innego kodowania, które nie ma pewności co do tego samego wyniku. –

2

Proszę pamiętać, że NSASCIIStringEncoding i NSUTF8StringEncoding trzeba dopasować znaki w łańcuchu.