2009-11-26 11 views
6

Ich versuche, NSString in unsigned Char * für iPhone-Anwendung zu konvertieren. und ich bin neu für dieses Ziel C und iphone Anwendung, also bitte helfen Sie dabei. Ob es dort irgendwelche API gibt, die dabei helfen können, NSString in unsigned char * umzuwandeln.Convert NSString zu unsigned Char * für iPhone-Anwendung

Danke, KamalBhr

Antwort

0

Sie können versuchen,

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

danken Ihnen für Schnelle Antwort..ich probiere diesen Code .... FileString = [[NSString Alloc] initWithContentsOfFile: defaultPath]; unsigned char * finalstring = [FileString UTF8Char]; aber es ist nicht compiling .. – KamalBhr

4

NSString reference ist Ihre Hilfe zu verwenden. NSString hat diese Funktionen es zu c-string zu konvertieren:

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

Und es gibt auch eine similar question.

+0

Vielen Dank für Ihre schnelle Antwort und ich habe die Lösung .. Grüße kamalBhr – KamalBhr

19

Nun, die Frage ist ein bisschen falsch, weil das Tippen nicht das Einzige ist, worüber man sich Sorgen machen muss. Sie müssen sich nicht nur um den Zugriff kümmern, sondern müssen sich auch um die Codierung sorgen. Vorausgesetzt, dass Sie nur die UTF8-Codierung wollen, als Sie mit wegkommen können:

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

Wenn jedoch benötigen Sie Zugriff auf ein Byte pro Zeichen Daten, als Sie wahrscheinlich eines der anderen Codierungen wollen, wie ASCII:

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

die andere wertvolle Codierung, die Sie Latein1 verwenden möchten, das Sie Standard-ASCII wird von den meisten Sprachen verwendet wird, zusammen mit akzentuierten Zeichen und Symbole in Westeuropa und den USA: NSISOLatin1StringEncoding

+0

+1 für die 'NSISOLatin1StringEncoding'. 'NSASCIIStringEncoding' ist fehlgeschlagen, weil meine Zeichenfolge Glyphen mit einem vorzeichenlosen Wert> 128 enthielt. – PassKit