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 String to Byte[]


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Conversion String to Byte[]
    Bon mon problème est assez bizarre. Je charge un tableau de byte (byte[]) avec des valeurs. Après je converti ce tableau en String puis quand je veux revenir à l'envers c'est à dire converti la même chaine vers le tableau de byte[] je ne trouve pas la même valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        byte[] secretKey = bf.getSecretKeyInBytes();
        System.out.println(secretKey);
        BigInteger b = new BigInteger(secretKey);
        System.out.println(b);
        String s = b.toString();
        BigInteger b2 = new BigInteger(s);
        System.out.println(b2);    
        byte[] s2 = b2.toByteArray();
        System.out.println(s2);
        if(secretKey.equals(s2)){
        	System.out.println("ok");
        }
        else System.out.println("Not ok");
    Le résultat est comme suite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [B@1a73d3c
    -103503614347144644698644593484214529295
    -103503614347144644698644593484214529295
    [B@a56a7c
    Not ok

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    En Java, la méthode equals() des tableaux ne sert pratiquement à rien : un tableau n'est equals() à un autre que s'ils sont en fait deux références à un seul et même tableau. Un contenu identique ne suffit pas : il faut que les deux variables pointent vers le même tableau.

    Utilise Arrays.equals(tableau1, tableau2) à la place.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Vous voulez dire que je dois utiliser le même tableau sans avoir passer par une conversion, pour obtenir la même référence. J'ai utilisé ça mais ce n'est pas ce que je veux!!!!
    En réalité je veux conserver le même tableau car dans mon projet je passe par un fichier texte et donc par une chaine de caractère (String) ce qui fait je perd l'adresse mémoire de l'objet. Tout ce qui me reste c'est la valeur!!
    Y a une solution pour ça

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Le truc c'est que le system.out d'un tableau affiche sa pseudo adresse mémoire, tu as deux tableaux, donc deux pseudo adresses. Donc le system.out affichent quelque chose de différent ce qui est tout à fait normal.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par sympas88 Voir le message
    Y a une solution pour ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrays.equals(tableau1, tableau2)
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau1.equals(tableau2)
    Parce que le deuxième ne fait pas ce que tu veux et n'est pas très utile.

    Ne lis pas les réponses en diagonale, et essaie les solutions qu'on te propose avant de te plaindre, s'il te plaît.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Conversion string en byte?
    Par toutounesan dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/07/2011, 11h23
  2. Conversion String vers Byte
    Par nonos58 dans le forum Langage
    Réponses: 8
    Dernier message: 10/05/2011, 15h55
  3. Conversion String to Byte
    Par PoZZyX dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/12/2007, 11h45
  4. Conversion String vers Byte
    Par zulianithomas dans le forum Delphi
    Réponses: 8
    Dernier message: 07/10/2006, 10h09
  5. [C#] Conversion d'un string en byte[] et inversement
    Par david71 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/12/2004, 15h10

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