int、NSInteger、NSNumber和NSString以及相互转换

 NSInteger:spa

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

typedef long NSInteger;

typedef unsigned long NSUInteger;

#else

typedef int NSInteger;

typedef unsigned int NSUInteger;

#endif

由定义可知,在32系统下NSInteger 即为int,在64位系统下NSInteger位long。苹果的官方文档中老是推荐用NSInteger。code

总结:NSInteger与int的区别是NSInteger会根据系统的位数(32or64)自动选择int的最大数值(int or long)。orm

当须要使用int类型的变量的时候,能够像写C的程序同样,用int,也能够用NSInteger,但更推荐使用NSInteger,由于这样就不用考虑设备是32位的仍是64位的。对象

在开发中只需使用NSInteger便可。blog

 

 

NSNumber:Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。开发

NSInteger是基础类型,可是NSNumber是一个类。若是想要存储一个数值,直接用NSInteger是不行的,好比在一个Array里面这样用:文档

NSArray *array= [[NSArray alloc]init];
[array addObject:3];//会编译错误

这样是会引起编译错误的,由于NSArray里面放的须要是一个类,但‘3’不是。这个时候须要用到NSNumber:字符串

NSArray *array= [[NSArray alloc]init];
[array addObject:[NSNumber numberWithInt:3]];

Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。get

例如如下封装方法:string

+ (NSNumber*)numberWithChar: (char)value;
+ (NSNumber*)numberWithInt: (int)value;
+ (NSNumber*)numberWithFloat: (float)value;
+ (NSNumber*)numberWithBool: (BOOL) value;

将基本类型数据封装到NSNumber中后,就能够经过下面的实例方法从新获取它:

- (char)charValue;
- (int)intValue;
- (float)floatValue;
- (BOOL)boolValue;
- (NSString*)stringValue;

                                                                   相互之间的转换

1: NSString  <==> NSInteger

 

 NSInteger转化 NSString类型:
      [ NSString  stringWithFormat:  @"%d" , NSInteger];
NSString转化 NSInteger类型:
      NSInteger = [ NSString   intValue ] 

 

 

2 : NSString <==> NSNumber

 

将NSNumber转换为NSString

NSNumber *A;
NSString *B;
NSNumberFormatter* numberFormatter = [[NSNumberFormatteralloc] init];
B = [numberFormatter stringFromNumber:A];

 

将NSString转换为NSNumber    

    NSString *ss=@"224.34129";
    NSNumber*result;
    NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
    result=[f numberFromString:ss];
    if(!(result))
    {
        result=ss;
    }
    NSLog(@"%.2f",[result floatValue]);

 

3.NSString 与 int ,float,double,NSInteger之间的转换  

 NSString *teststring = @"32.54" ;

    int i = [teststring intValue ];

    float i1 = [teststring floatValue ];

    double i2 = [teststring doubleValue ];

    NSInteger i3 = [teststring integerValue ];

    

    NSString *tostring = nil ;

    tostring = [ NSString stringWithFormat: @"%d" ,i];

    NSLog ( @"tostring-int:%@",tostring);

    tostring = [ NSString stringWithFormat: @"%.3f" ,i1];

    NSLog ( @"tostring-float:%@",tostring);

    tostring = [ NSString stringWithFormat: @"%e" ,i2];

    NSLog ( @"tostring-double:%@",tostring);

 

4.nsstring和float 还有int之间的转换

 NSString *tempA = @"123";

NSString *tempB = @"456";

 

1,字符串拼接

NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB];

 

2,字符转int

int intString = [newString intValue];

 

3,int转字符

NSString *stringInt = [NSString stringWithFormat:@"%d",intString];

 

4,字符转float

float floatString = [ newString floatValue];


5,float转字符

NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];
相关文章
相关标签/搜索