将Unichar转换为Int问题

fab*_*789 7 iphone xcode objective-c unichar

我试图从unichar转换为int有一个奇怪的问题:

我有一个包含几个数字的字符串,比如@"12345".这个数字我想单独​​保存,这意味着我想要5个数字,1,2,3,.... 现在,同时

NSLog(@"Value: %C", [myString characterAtIndex:0]);
Run Code Online (Sandbox Code Playgroud)

回报

Value: 1
Run Code Online (Sandbox Code Playgroud)

这个:

NSLog(@"Value: %@", [NSNumber numberWithUnsignedChar:[myString characterAtIndex:0]]);
Run Code Online (Sandbox Code Playgroud)

回报

Value: 49
Run Code Online (Sandbox Code Playgroud)

Fabian,我真的很感激一些帮助

小智 10

在上面的代码中,你得到的正是你所要求的; 该字符的数值'1'为49,您正在创建一个NSNumber.

如果您想要的是1,那么您可以利用数字0-9在ASCII/UTF-8表中按顺序排列并从您收到的unichar中减去适当的值这一事实.

试试这段代码片段,让您开始朝着正确的方向前进:

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