我有这段 Objective C 代码,我将 aNSString
转换为int
:
NSString *a=@"123abc";
NSInteger b=(int) a;
NSLog(@"b: %d",b);
并NSLog
产生此输出:
b: 18396
谁能向我解释为什么会这样?
我在印象类型下将字符串转换为整数会从字符串中获取数值。
我有这段 Objective C 代码,我将 aNSString
转换为int
:
NSString *a=@"123abc";
NSInteger b=(int) a;
NSLog(@"b: %d",b);
并NSLog
产生此输出:
b: 18396
谁能向我解释为什么会这样?
我在印象类型下将字符串转换为整数会从字符串中获取数值。
你在那里有指向NSString
对象的指针的整数值。要将字符串解析为整数,您应该这样做:
NSString *a = @"123abc";
NSInteger b = [a integerValue];
要获得数值,请使用:
int val = [stringObj intValue];
或为NSInteger
:
NSInteger val = [stringObj integerValue];
当您将对象转换为整数时,您将获得指向内存地址的指针。您可以调用来[a integerValue]
获取字符串的整数值。
此外,在铸造时最好使用NSInteger
instate of int
。因为当使用 64 位操作系统时,aNSInteger
将是 64 位。
或者使用 Objective-C 文字语法:
@([a intValue]);