2009-11-26 45 views
6

Tôi đang cố gắng chuyển đổi NSString thành unsigned char * cho ứng dụng iphone. và tôi mới cho ứng dụng C và iphone mục tiêu này vì vậy hãy giúp đỡ về điều này. Cho dù là có bất kỳ api là có mà có thể giúp chuyển đổi NSString để unsigned char *.Chuyển đổi NSString thành unsigned char * cho ứng dụng iphone

Cảm ơn, KamalBhr

Trả lời

0

Bạn có thể cố gắng sử dụng

- (const char *)cStringUsingEncoding:(NSStringEncoding)encoding 
+0

cảm ơn cho Trả lời nhanh .. tôi đang thử mã này .... FileString = [[NSString alloc] initWithContentsOfFile: defaultPath]; unsigned char * finalstring = [FileString UTF8Char]; nhưng nó không biên dịch .. – KamalBhr

4

NSString reference là sự giúp đỡ của bạn. NSString có các chức năng này để chuyển đổi nó thành c-string:

- (const char *)UTF8String; 
- (const char *)cStringUsingEncoding:(NSStringEncoding)encoding 
- (BOOL)getCString:(char *)buffer maxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding 

Và cũng có một similar question.

+0

cảm ơn bạn rất nhiều vì đã trả lời nhanh chóng và tôi đã nhận được giải pháp .. liên quan kamalBhr – KamalBhr

19

Vâng, câu hỏi là một chút sai lầm, vì việc nhập không phải là điều duy nhất bạn phải lo lắng. Bạn không chỉ cần lo lắng về truy cập, nhưng bạn cũng cần phải lo lắng về việc mã hóa. Giả sử bạn chỉ muốn mã hóa UTF8, hơn bạn có thể nhận được ngay với:

NSString *myString = @"Hello"; 
const unsigned char *string = (const unsigned char *) [myString UTF8String]; 

Tuy nhiên, nếu bạn cần truy cập vào một byte cho mỗi dữ liệu nhân vật, hơn bạn có thể muốn một trong những mã khác, như ASCII:

NSString *myString = @"Hello"; 
const unsigned char *string = (const unsigned char *) [myString cStringUsingEncoding:NSASCIIStringEncoding]; 

mã hóa có giá trị khác mà bạn có thể muốn sử dụng là latin1, mà được bạn chuẩn ASCII, cùng với các nhân vật có dấu và các ký hiệu được sử dụng bởi hầu hết các ngôn ngữ ở Tây Âu và Mỹ: NSISOLatin1StringEncoding

+0

+1 cho 'NSISOLatin1StringEncoding'. 'NSASCIIStringEncoding' không thành công vì chuỗi của tôi chứa glyphs có giá trị unsigned> 128. – PassKit

Các vấn đề liên quan