7
votes

Longue valeur entière objectif-c

J'ai une valeur entière longue (ex: 2705758126) dans Nstring.

Quand j'essaie de le montrer: NSLOG (@ "% I", [myvalue integervalue]); Il retourne: 2147483647.

Comment montrer, comparer et etc. Ce long entier


0 commentaires

4 Réponses :


23
votes

Essayez avec

NSLog(@"%lld", [myValue longlongValue]);


1 commentaires

J'ai fait une édition pour résoudre le cas dans la méthode. Je devais ajouter un lien car les modifications de moins de 6 caractères ne sont pas autorisées ... (c'est très gênant et m'a mordu à plus d'une occasion.)



4
votes

La documentation recommande à l'aide de @ "% LD" et @ "% LU" pour Nsinteger et Nsuinteger, respectivement. Puisque vous utilisez la méthode IntegerValue (par opposition à l'intention ou à la longueur longuevalue ou autre), cela retournera une nsinteger.


6 commentaires

@Ildan Non, il a une nstring qu'il convient à une nsinteger, ce qui signifie que cela pourrait être une INT (sur des machines 32 bits) ou il pourrait s'agir d'une longue distance (sur des machines de 64 bits).


Oh bien, j'ai tendance à écouter ce que les gens disent. Je lis "j'ai une longue valeur entière".


@Ildan ouais j'ai raté le nstring la première fois le lire aussi. =)


Il me semble que l'affiche a une chaîne contenant un numéro qui déborde d'une valeur de 32 bits. Donc, Nsinteger ne sera pas assez bon sur une machine 32 bits.


@Stig 2 ^ 32 = 4 294 967 296, soit 1 589 209,170 plus grand que le nombre donné dans la question. Comment ne correspondrait-il pas à un Int 32 bits?


@Dave Delong La méthode integervalue renvoie un numéro signé. Le max de 32 bits signé est (2 ^ 31) -1, pas 2 ^ 32



2
votes

Vous devriez regarder Apple Documentation . Nstring a la méthode suivante: xxx

qui devrait faire ce que vous voulez.


0 commentaires

1
votes

à partir de cet exemple ici, vous pouvez voir les conversions des deux manières: xxx


0 commentaires