IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Conversion Long en int pas très propre !


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut Conversion Long en int pas très propre !
    Bonjour,
    Mon tableau de byte attendant un int voilà comment je converti le Long renvoyé par getFilePointer...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      pointeurFinFichier = raf.getFilePointer();
                }
            }
          String pointeurFinFichierString = Long.toString(pointeurFinFichier);
          int pointeurFinFichierInt = Integer.parseInt(pointeurFinFichierString);
          byte[] byData2 = new byte[pointeurFinFichierInt];
    Je pense qu'il doit exister un autre moyen de faire , plus propre non ?
    merci

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Tu as raison, il y a beaucoup plus rapide, en utilisant la méthode de Long : intValue()

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par CheryBen Voir le message
    Tu as raison, il y a beaucoup plus rapide, en utilisant la méthode de Long : intValue()
    Ou un simple cast ce qui revient strictement au même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int pointeurFinFichierInt = (int) pointeurFinFichier;
    Le problème dans tous les cas c'est que tu risque d'avoir des valeurs incorrects si tu ouvres un fichier très gros (+ de 2Go) car la valeur du long deviendra négatif lorsqu'elle sera casté en int. Il faut donc gérer ce cas particulier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (pointeurFinFichier > Integer.MAX_VALUE) {
    	throw new IOException("File too large !");
    }
     
    int pointeurFinFichierInt = (int) pointeurFinFichier;
    En fait ce n'est pas vraiment obligatoire, mais cela permet d'avoir une IOException plus clair à la place d'une NegativeArraySizeException peu compréhensible...

    a++


    a++

  4. #4
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Merci @ tout les 2,
    pour info le cast ne passe pas (inconvertible types found java.lang.Long required int ), j'ai du utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     int pointeurFinFichierInt = pointeurFinFichier.intValue();
    Merci

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par totoche Voir le message
    pour info le cast ne passe pas (inconvertible types found java.lang.Long required int )
    Parce que tu as déclaré comme le type wrapper Long et non pas comme le type primitif long...

    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb de conversion d'un Long en int
    Par lilli1407 dans le forum Langage
    Réponses: 3
    Dernier message: 06/07/2011, 16h06
  2. [TOS 3.1.0] Fichier excel ne prenant pas en compte la conversion string en int
    Par Siria Black dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 01/07/2011, 08h57
  3. Conversion string char[] pas très propre
    Par pasqual dans le forum Débuter
    Réponses: 4
    Dernier message: 17/09/2009, 08h19
  4. correction d'un calcul de pointeur pas très propre
    Par contremaitre dans le forum C
    Réponses: 11
    Dernier message: 12/09/2008, 09h48
  5. Réponses: 7
    Dernier message: 26/10/2006, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo