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

Langage Java Discussion :

String vers byte[]


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 71
    Points : 52
    Points
    52
    Par défaut String vers byte[]
    Bonjour, j'ai un petit souci de convertion.
    J'ai un tabealu de byte nommé msg :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    byte msg[]= new byte[50];
    J'utilise ce type car c'est pour écrire dans une socket. ( pour le write() ).
    Je veu donc mettre un message, alors j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String s = "test message";
    msg = s.getBytes() ;
    Mais quand j'essaie d'afficher le contenue de msg ou de faire un toString, ca renvoie une chaine totalement différente.

    Pourriez vous m'indiquez comment faire pour mettre un message dans un tableau de byte ?

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    msg est un tableau de bytes, si tu l'affiches par un toString() il est tout à fait normal que l'affichage ne produise pas la chaîne "test message", tu dois avoir qq chose du genre :

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 71
    Points : 52
    Points
    52
    Par défaut
    merci pour ta réponse.
    oui j'obtiens exactement ce genre de chose.
    Comment puis je verifier alors que j'nevoie bien ce qu'il faut dans le tableau?
    (etant donné que ce tableau doit me servir a communiquer dans une socket)

    Merci

  4. #4
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut Soluce
    Tu devrais être un peu plus explicite dans ta description (ouaip .. je sais, à chaque sujet on dit ça ...)

    Si tu obtiens un truc du genre :
    compile:
    run:
    [B@10b62c9
    BUILD SUCCESSFUL (total time: 0 seconds)
    C normal .... C'est parce que tu affiche l'adresse du tableau (l'adresse mémoire). Donc il faut que tu parcours ce tableau en affichant chaque case du tableau en la convertissant en char car 1 byte n'est pas affichable (sinon tu verrai un int à la place de chaque lettre). On a donc, à la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            byte msg[]= new byte[50];
            String s = "test message";
            msg = s.getBytes();
            System.out.println(msg);
    ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
            byte msg[]= new byte[50];
            String s = "test message";
            msg = s.getBytes();
     
            for(int i=0 ; i<msg.length ; i++)
            System.out.print((char)msg[i]);
    Et tu obtiens en résultat :
    compile:
    run:
    test message
    BUILD SUCCESSFUL (total time: 0 seconds)

    Voila .... je pense ke C bon pr toi ...
    Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
    Rien ne sert de partir à point, il vaut mieux courir .

  5. #5
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    euu .. dsl, G mis 1 peu de temps à répondre dc ya 1 réponse intercalée
    Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
    Rien ne sert de partir à point, il vaut mieux courir .

  6. #6
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    par exemple en construisant une String à partir du tableau de bytes et en vérifiant l'égalité avec la String initiale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boolean itWorks = new String(msg).equals(s);

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 71
    Points : 52
    Points
    52
    Par défaut
    Merci a vous !

    Neptus, j'ai fais comme tu me l'as dis, et oui, ca fonctionne.
    Merci pour vos réponses si rapide.

    @ +

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 55
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    Pour lire un tableau de byte, il suffit de créer un new String,
    exemple :
    String s = new String(variable_de_type_byte);
    ------------------------------------------------------
    La connaissance s'aquiert par l'expérience, tout le reste n'est que de l'information (A. Einstein)

  9. #9
    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 otabbakh Voir le message
    Bonjour,
    Pour lire un tableau de byte, il suffit de créer un new String,
    exemple :
    String s = new String(variable_de_type_byte);
    Non.
    Ceci ne compile pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    byte b = 0x41;
    String s = new String(b);
    Par ailleurs, c'est une mauvaise idée d'utiliser le constructeur String(byte[]). Il vaut mieux indiquer également le charset, avec String(byte[] bytes, String charset) ou String(byte[] bytes, Charset charset).

    Comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    byte[] bytes = new byte[] { (byte) 0xEE, (byte) 0x6C, (byte) 0x65 };
    String s = new String(bytes, "iso-8859-1");
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. String vers byte
    Par hetlar dans le forum Langage
    Réponses: 2
    Dernier message: 24/08/2013, 14h14
  2. Conversion String vers Byte
    Par nonos58 dans le forum Langage
    Réponses: 8
    Dernier message: 10/05/2011, 15h55
  3. Problème de parse de String vers Byte
    Par Johan.Mazel dans le forum Java ME
    Réponses: 5
    Dernier message: 25/07/2007, 12h56
  4. Conversion String vers Byte
    Par zulianithomas dans le forum Delphi
    Réponses: 8
    Dernier message: 07/10/2006, 10h09
  5. Conversion String en Hexa ("1F") vers byte
    Par ducseb dans le forum Langage
    Réponses: 1
    Dernier message: 15/04/2006, 20h03

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