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

Collection et Stream Java Discussion :

Conversion d'une chaine de caractères en un tableau de bytes


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Par défaut Conversion d'une chaine de caractères en un tableau de bytes
    Bonjour,
    J'aimerais convertir une chaine de caractère reçue de type :
    String str = "bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb "
    en un tableau de bytes
    byte[] byte_array = {(byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB,
    (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB};
    car j'ai besoin dans la suite de mon code de manipuler ce tableau de bytes et donc d'être sure qu'il contient les bonnes valeurs.

    J'ai essayé le petit code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String str = "bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb ";
    		byte [] byte_array = new byte [16];
     
    		byte_array = str.getBytes();
    		System.out.println(str);
    		System.out.println(byte_array.toString());
            for(int i = 0x00; i <= 0x0F; i++)
            	System.out.print(String.format("%x ", byte_array[i]));
    Et j'obtiens alors le resultat suivant :
    bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb
    [B@addbf1
    62 62 20 62 62 20 62 62 20 62 62 20 62 62 20 62
    Donc pas du tout ma chaine initiale de nombres hexadécimaux.

    Si quelqu'un a une idée, je prends avec plaisir.
    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 75
    Par défaut
    Enfaîte tu a fait un tableau de 16 bytes, alors que ta chaîne est 3 fois plus longue.

    "bb " = 3 caractères

    ta chaine devient 62 62 20. 62 ascii de b en hexa et 20 ascii de espace en hexa.

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Par défaut
    D'accord, mais si je veux obtenir bb comme initialement que faut-il que je fasse ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 75
    Par défaut
    C'est un peu plus chaud mais on y arrive

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    StringBuffer buffer = new StringBuffer();
    for(int i = 0x00; i <= 0x0F; i++)        	             
         buffer.append((char)Integer.parseInt(Integer.toHexString(byte_array[i]), 16));
    System.out.println(buffer);
    et j'obtiens 16 caractère "bb bb bb bb bb b"


    Pour l'explication:
    Je transforme le byte en string j’obtiens "62"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Integer.toHexString(byte_array[i])
    Je transforme l'hexa en ascii (int) j’obtiens "98"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Integer.parseInt(Integer.toHexString(byte_array[i]), 16));
    Et transformé l'ascii en char j’obtiens "b"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (char)Integer.parseInt(Integer.toHexString(byte_array[i]), 16)

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Tu devrait passer par la fonction split

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String str = "bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb";
    String[] table  str.split(" ");
    for(String value : table){
    // TODO
    Integer integer = hexaStringToInteger("0x"+value);
    }
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Par défaut
    Merci Catsoumoto, pour ta réponse. J'obtiens bien les lettres bb bb bb... dans ma console mais le problème c'est que le résultat n'est toujours pas dans un tableau de bytes.

    Pour la réponse de kolodz le problème est que je ne sais pas comment coder la fonction hexaStringToInteger.

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

Discussions similaires

  1. conversion d'une chaine de caractére en entier
    Par moooona dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 30/05/2008, 09h41
  2. Conversion d'une chaine de caractères en unsigned long
    Par radouane_as dans le forum Débuter
    Réponses: 2
    Dernier message: 15/08/2007, 19h21
  3. [Système] Conversion d'une chaine de caractère en hexa
    Par Florent08800 dans le forum Langage
    Réponses: 5
    Dernier message: 10/07/2006, 15h32
  4. conversion d'une chaine de caractère en int
    Par greg13 dans le forum C++
    Réponses: 3
    Dernier message: 25/08/2005, 16h18

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