2011-09-22 32 views
4

当与@"a"提出,我希望能够得到它的97如何获得一个NSString *的ASCII值,指向一个字符?

我认为这确实是

NSString *c = [[NSString alloc] initWithString:@"a"]; 
NSLog(@"%d", [c intValue]); // Prints 0, expected 97 

ASCII值可是......你猜对了(或者知道:)) .. 它不是。

如何获取指向单个字符的NSString *的ascii值?

+0

请注意,“ascii”在这里有点用词不当,因为NSString可以保存unicode字符。不要认为'[str characterAtIndex:0]'的结果将在0-255范围内。 –

回答

3
NSLog(@"%d",[c characterAtIndex:0]); 

NSString class reference:接收机的文本的整数值,假设十进制表示,并在字符串的开头跳过空格。在溢出时返回INT_MAX或INT_MIN。 如果接收方不以数字的有效小数文本表示开头,则返回0。

所以它返回0是因为你在一个数字的无效十进制文本表示上调用了intValue。

5
NSString *str = @"a"; 
unichar chr = [str characterAtIndex:0]; 
NSLog(@"ascii value %d", chr); 

为什么你的方法不起作用是因为你在STRING上操作还记得吗?不是一个字符。它仍然是一个NSString。

相关问题