J'ai une valeur entière longue (ex: 2705758126) dans Nstring. P>
Quand j'essaie de le montrer: NSLOG (@ "% I", [myvalue integervalue]); Il retourne: 2147483647. P>
Comment montrer, comparer et etc. Ce long entier p>
4 Réponses :
Essayez avec
NSLog(@"%lld", [myValue longlongValue]);
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.)
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. P>
@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 code> renvoie un numéro signé. Le max de 32 bits signé est (2 ^ 31) -1, pas 2 ^ 32
Vous devriez regarder Apple Documentation . Nstring a la méthode suivante: qui devrait faire ce que vous voulez. P> p>
à partir de cet exemple ici, vous pouvez voir les conversions des deux manières: