【问题标题】:NSScanner not scanning long numeric string into numberNSScanner 没有将长数字字符串扫描成数字
【发布时间】:2014-07-08 21:56:43
【问题描述】:

我有一个字符串“999999999999528106”,我将它传递给 NSScanner,但输出不正确。结果我得到 2147483647。

我猜我的字符串的大尺寸不适合 NSInteger。任何线索

    NSScanner *aScanner = [NSScanner scannerWithString:iString];
    NSMutableCharacterSet *aCharset = [NSMutableCharacterSet whitespaceAndNewlineCharacterSet];
    [aCharset formUnionWithCharacterSet:[NSCharacterSet symbolCharacterSet]];
    [aScanner setCharactersToBeSkipped:[aCharset copy]];


    NSInteger anIntegerResult = 0;
    [aScanner setScanLocation:0];
    if ([aScanner scanInteger:&anIntegerResult] && aScanner.isAtEnd)
        return @(anIntegerResult);

【问题讨论】:

    标签: ios objective-c cocoa-touch nsscanner


    【解决方案1】:

    来自the NSScanner documentation

    在溢出的情况下跳过多余的数字,因此接收器的位置超过了整个整数表示。

    所以是的,它正在溢出。您可以改用scanLongLong:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多