2011-09-22 95 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。

相關問題