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

Java Discussion :

Conversion chaine, caractère par caractère, en binaire


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Par défaut Conversion chaine, caractère par caractère, en binaire
    Bonjour,
    je veux convertir une chaine, caractère par caractère, en binaire, j'ai trouvé ce code qui fonctionne mais j'arrive pas à le comprendre car j'ai d'autres besoins à intégrer.
    quelqu'un peut m'aider?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    String s = "foo";
    		byte[] bytes = s.getBytes();
    		StringBuilder binary = new StringBuilder();
    		for (byte b : bytes) {
    			int val = b;
    			for (int i = 0; i < 8; i++) {
    				binary.append((val & 128) == 0 ? 0 : 1);
    				val <<= 1;
    			}
    			binary.append(' ');
    		}
    		System.out.println("'" + s + "' to binary: " + binary);

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut
    Citation Envoyé par guizaniseifislam Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
           String s = "foo"; //Déclaration du string (tu t'en doutais un peu ^^)
            byte[] bytes = s.getBytes(); //Transforme le string en un tableau d'octets
            StringBuilder binary = new StringBuilder();
            for (byte b : bytes) { //Boucle sur ces octets
                int val = b;
                for (int i = 0; i < 8; i++) { //Boucle sur les 8 bits de l'octet
    
                    binary.append((val & 128) == 0 ? 0 : 1); //"&" bit à bit entre ton octet et 128 (10000000) 
                            => renvoi donc la valeur de l'octet de poid fort (le plus a gauche) : 0 ou 1. Met cette valeur dans le String "binary".
    
    
                    val <<= 1; //Décale tous les bits d'un cran vers la gauche
                          => ainsi au prochain tour de boucle ça sera le bit suivant qui sortira
                }
                binary.append(' '); //Met un espace entre les octets
            }
            System.out.println("'" + s + "' to binary: " + binary); //Affichage final
    Tout est clair ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Par défaut Conversion chaine, caractère par caractère, en binaire
    Bonjour,
    merci pour l'effort mais je n'ai pas bien compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    binary.append((val & 128) == 0 ? 0 : 1); //"&" bit à bit entre ton octet et 128 (10000000) 
                            => renvoi donc la valeur de l'octet de poid fort (le plus a gauche) : 0 ou 1. Met cette valeur dans le String "binary".
     
     
                    val <<= 1; //Décale tous les bits d'un cran vers la gauche
                          => ainsi au prochain tour de boucle ça sera le bit suivant qui sortira
    et je v me casser la tête en lisant la documentation sur ces opérateurs.
    Entre temps, avez vous une autre solution pour ce besoin de conversion?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Sans utiliser l'inspection de bits ?
    Eh bien, il y a toujours la méthode toBinaryString()...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for(byte b : bytes) { //Boucle sur ces octets
      int val = b & 0xFF; // conversion vers int, comme si le byte était non signé.
       // => Autrement dit, si le bit de poids fort était à 1, ne pas le propager lors de la conversion
     
      String s = Integer.toBinaryString(val); // obtient le nombre écrit en binaire
        // => Mais la chaîne n'a pas de zéro devant, par exemple pour le nombre 4, ça donne "100" et non pas "00000100"
     
      for(int i = 0; i < 8 - s.length(); i++) { // boucle pour écrire les zéros manquants
        binary.append('0');
      }
     
      binary.append(s); // écrire le nombre lui-même
      binary.append(' ');
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Par défaut Conversion chaine, caractère par caractère, en binaire
    merci à vous aussi pour l'éclaircissement

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

Discussions similaires

  1. Recopier une chaine, caractère par caractère
    Par xenos dans le forum Débuter
    Réponses: 8
    Dernier message: 25/02/2009, 12h38
  2. [Débutant] Lecture caractère par caractère
    Par boober31 dans le forum Débuter
    Réponses: 10
    Dernier message: 28/09/2007, 14h52
  3. Réponses: 18
    Dernier message: 17/01/2007, 12h49
  4. Réponses: 6
    Dernier message: 16/12/2006, 15h08
  5. Réponses: 10
    Dernier message: 19/06/2006, 19h04

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