代码之家  ›  专栏  ›  技术社区  ›  testing

如何提取64位有符号整数值

  •  0
  • testing  · 技术社区  · 14 年前

    我正在向NSDictionary查询一个值。因为我有问题,所以我印了这个东西。它显示了以下内容:

    <CFString 0x5d33630 [0x26af380]>{contents = "myDictionaryItem"} = <CFNumber 0x5d58940 [0x26af380]>{value = +1286301600, type = kCFNumberSInt64Type}

    NSString *myString = [NSString stringWithFormat:@"%qi", [myDictionary objectForKey:@"myDictionaryItem"]];
    

    这给了我一个值,但这个值不是字典里的值。

    long long my64bitsignedIntegerValue = (long long)[myDictionary objectForKey:@"myDictionaryItem"];
    

    但我得到了警告 Cast from pointer to integer of different size . 那不管用,因为 stringWithFormat 正在返回类型为的值 id post 哪里 身份证件 属于类型 UInt32

    我想要的值是128630160。一个有符号整数(2.147.483.648到2.147.483.647)应该可以做我想要的事情。我不明白科科为什么要做一个64位有符号整数。

    3 回复  |  直到 7 年前
        1
  •  0
  •   Vladimir    14 年前
    [myDictionary objectForKey:@"myDictionaryItem"]
    

    返回object(我想是-NSNumber),而不是标量数。如果它确实是一个NSNUmber对象,则可以使用以下函数之一从中获取数字:

    -intValue
    -longValue
    -longLongValue
    

    NSString *myString = [NSString stringWithFormat:@"%qi", [[myDictionary objectForKey:@"myDictionaryItem"] intValue]];
    
        2
  •  0
  •   Wevah    14 年前

    你想要:

    [[myDictionary objectForKey:@"myDictionaryItem"] integerValue];
    

    [[myDictionary objectForKey:@"myDictionaryItem"] longLongValue];
    

    CFNumber/NSNumber是围绕number原语的包装器对象。

        3
  •  0
  •   Simon Whitaker    14 年前

    NSNumber *num = [myDictionary objectForKey:@"myDictionaryItem"];
    long numAsLong = [num longValue];
    long long numAsLongLong = [num longLongValue];
    

    等。