来自int的NSString unichar

时间:2013-08-09 06:36:46

标签: iphone ios objective-c ipad

我有一个int值,我从字符爸爸那里获得,这是29240.我可以将这个数字转换为十六进制,但我不知道如何在{{1}中写出中文字符只有NSString

基本上,我所做的是:

int 29240

它输出的是29240。

但是,我不知道如何仅从NSString * s = @"爸"; int a = [s characterAtIndex:0]; NSLog(@"%d", a); 创建仅包含爸的NSString

我将29240转换为二进制,它给了我7238,但我似乎无法创建一个允许我输入任何整数和int 29240相应字符的方法。 我可以硬编码,所以我有

NSLog

但是我不知道怎么用任何int来做。

感谢任何可以帮助我的人!

2 个答案:

答案 0 :(得分:4)

要从一个(或多个)Unicode字符创建字符串,请使用initWithCharacters

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

NSString在内部使用UTF-16字符,所以 这适用于“基本多语言平面”中的所有字符,即最多U+FFFF的所有字符。以下代码适用于任意字符:

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: 

答案 1 :(得分:0)

尝试使用此代码段,让您开始朝着正确的方向前进:

NSString *s = @"0123456789";
for (int i = 0; i < [s length]; i++) {
    NSLog(@"Value: %d", [s characterAtIndex:i]);
}

只需将字符作为整数传递:

unichar decimal = 12298;
NSString *charStr = [NSString stringWithFormat:@"%C", decimal];