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

 NSInteger:

#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。

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

当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。

在开发中只需使用NSInteger即可。

 

 

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类来包装(即以对象形式实现)基本数据类型。

例如以下封装方法:

+ (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];

 

 

 

 

 
 
 

转载于:https://www.cnblogs.com/liuziyu/p/4214984.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值