1

我有一个int从爸字符中得到的值,即 29240。我可以将这个数字转换为十六进制,但我不知道如何将汉字写成NSString只有int 29240.

基本上,我所做的是:

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

它作为输出给出的是 29240。

但是,我不知道如何NSString从只有int 29240.

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

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

但我不知道如何用任何 int 来做。

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

4

2 回答 2

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: 
于 2013-08-09T06:43:06.663 回答
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];
于 2013-08-09T06:46:23.307 回答