5

NSStringをchar変数の配列に変換するアプリをセットアップしていて、一部のcharを整数に変換しようとしています(基本的には文字列から数値を解析するため)。しかし、それらをint変数に変換しようとすると、突然値が変化します。

例えば:

char thechar = array[7]; //to make sure the issue isn't related to the array

NSLog(@"%c %i %i",thechar,(int) thechar, [[NSNumber numberWithUnsignedChar:thechar] intValue]);

これを返します:

3 51 51

それを変換する両方の方法(私が見つけた)は、値を51に変更するようです。誰かが何が起こっているのか知っていますか?

4

2 に答える 2

12

私はそれを理解しました:それをNSStringに変換してからintValueを取得するだけです。

[[NSString stringWithFormat:@"%c", thechar] intValue];
于 2012-06-22T22:38:24.213 に答える
3

51は、リテラル文字「3」の数値です。多くの一般的なUnicodeエンコーディングも値を維持していますが、ASCII標準にまでさかのぼります。

48(または「0」)を引くだけで、かなり確実に数値を取得できます。

int num = (int)(numAsChar - '0');

または、文字列全体を変換する場合は、atoiを使用できます。

int num = atoi(myNumberString);
于 2012-06-22T22:21:05.763 に答える