/ / NSString unichar von int - iphone, ios, goal-c, ipad

NSString unichar von int - iphone, ios, objective-c, ipad

ich habe ein int Wert, den ich aus dem Zeichen 爸 erhalten habe, das 29240 ist. Ich kann diese Zahl in Hex umwandeln, aber ich habe keine Ahnung, wie ich das chinesische Zeichen in a ausschreiben soll NSString mit nur dem int 29240.

Grundsätzlich habe ich Folgendes getan:

NSString * s = @"爸";
int a = [s characterAtIndex:0];
NSLog(@"%d", a);

Was es als Ausgabe gab, war 29240.

Ich weiß jedoch nicht, wie man eine erstellt NSString das enthält nur 爸 von nur dem int 29240.

Ich konvertierte 29240 in eine Binärdatei, die mir 7238 lieferte, aber ich kann anscheinend keine Methode erstellen, mit der ich eine beliebige Ganzzahl und eingeben kann NSLog das entsprechende Zeichen. Ich kann es hart einprogrammieren, so dass ich es habe

char cString[] = "u7238";
NSData *data = [NSData dataWithBytes:cString length:strlen(cString)];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"result string: %@", string);

Aber ich bin nicht sicher, wie ich es mit irgendeinem int machen soll.

Vielen Dank an alle, die mir helfen können!

Antworten:

4 für die Antwort № 1

Verwenden Sie zum Erstellen einer Zeichenfolge aus einem (oder mehreren) Unicode-Zeichen initWithCharacters:

unichar c = 29240;
NSString *string = [[NSString alloc] initWithCharacters:&c length:1];

NSString verwendet intern UTF-16-Zeichen Dies funktioniert für alle Zeichen in der "Mehrsprachigen Grundebene", d. h. für alle Zeichen bis zu U+FFFF. Der folgende Code funktioniert für beliebige Zeichen:

uint32_t ch = 0x1F60E;
ch = OSSwapHostToLittleInt32(ch); // To make it byte-order safe
NSString *s1 = [[NSString alloc] initWithBytes:&ch length:4 encoding:NSUTF32LittleEndianStringEncoding];
NSLog(@"%@", s1);
// Output: