2011-07-19 14 views
10

Tôi gặp sự cố khi cố chuyển đổi NSString thành NSData và ngược lại. Tôi đang cố lưu trữ chuỗi được mã hóa vào cơ sở dữ liệu của mình. Cho rằng tôi đang sử dụng thuật toán AES. Bây giờ những gì tôi đang làm là tôi nhận được mã hóa NSData và tôi đang chuyển đổi này để NSString sử dụng sau đây:Chuyển đổi NSString thành NSData và ngược lại

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

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

Tại sao NSData không chuyển đổi trong khi sử dụng NSUTF8StringEncoding. Cùng cách khi tôi cố gắng để chuyển đổi chuỗi có bằng NSASCIIStringEncoding sử dụng:

// Not working 
[strTemp dataUsingEncoding:NSASCIIStringEncoding]; 

// Working 
[strTemp dataUsingEncoding:NSUTF8StringEncoding]; 

Tại sao NSASCIIStringEncoding không hoạt động trong khi chuyển đổi các NSString-NSData?

Trả lời

27

NSString-NSData:

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

NSData để NSString:

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

Đây là những gì tôi đang làm trong mã spinit đầu tiên của tôi .. nhưng nhận được một chuỗi nil –

+0

bạn có thể cung cấp thêm mã không? – Maulik

+0

mã là tổng số ở đây ... Tôi có một chuỗi tôi m chuyển đổi nó trong dữ liệu bằng cách sử dụng '[strTemp dataUsingEncoding: NSUTF8StringEncoding]' làm việc nhưng '[strTemp dataUsingEncoding: NSASCIIStringEncoding]' không làm việc tương tự như dữ liệu tôi đã sử dụng '[strTemp dataUsingEncoding : NSUTF8StringEncoding] 'Tôi đang chuyển đổi trở lại thành chuỗi bằng cách sử dụng' [[NSString alloc] initWithData: mã hóa encData: NSASCIIStringEncoding] 'đang làm việc nhưng' [[NSString alloc] initWithData: mã hóa encData: NSUTF8StringEncoding] 'thì không. Vì vậy, mỗi lần chuyển đổi của tôi xảy ra tôi đang sử dụng mã hóa khác nhau mà không có kết quả tương tự. –

2

Hãy nhớ rằng NSASCIIStringEncodingNSUTF8StringEncoding cần phải phù hợp với nhân vật trong chuỗi.