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 :

équivalent fonction bin2hex (php)


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Par défaut équivalent fonction bin2hex (php)
    Bonjour à tous,

    J'ai besoin d'une moulinette qui fasse ceci en JAVA.
    Es-ce qu'une âme charitable pourrait m'indiquer ou je peux touver un script de ce genre ? (ça fait 10 ans que je ne code plus en JAVA et c'est un besoin hyper ponctuel )

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            String bin = "10000000";
            int val = Integer.parseInt(bin, 2);
            String hex = Integer.toString(val, 16);
     
            System.out.println("Valeur en Binaire : "+bin);
            System.out.println("Valeur en Hexadecimal : "+hex);
    et voila la valeur la console

    Valeur en Binaire : 10000000
    Valeur en Hexadecimal : 80

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            int valdec = 27;
     
     
            System.out.println("Valeur en Binaire : "+Integer.toString(valdec, 2));
            System.out.println("Valeur en Hexadecimal : "+Integer.toString(valdec, 16));
    resultat :
    Valeur en Binaire : 11011
    Valeur en Hexadecimal : 1b
    en fait la fonction toString de la class Integer permet de définir la basse de sortie

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Par défaut
    hello rolfone, merci de ton aide. En fait je doit convertir une string et non un integer en entrée ...

    entrée
    "On-line Testing Pages by dev.FYIcenter.com
    Welcome to dev.FYIcenter.com on-line learning and testing pages."

    sortie "4F6E2D6C696E652054657374696E67205061676573206279206465762E46594963656E7465722E636F6D0D0A57656C636F6D6520746F206465762E46594963656E7465722E636F6D206F6E2D6C696E65206C6561726E696E6720616E642074657374696E672070616765732E"

  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
    C'est un peu plus compliqué que ça : l'exemple qu'il donne convertit une String en binaire, puis écrit le binaire en hexa.

    commons-codec propose ça. Mais c'est assez facile à faire soi-même.

    Convertir une chaîne en binaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // windows-1252 est le nom du charset dérivé de latin-1 utilisé par Windows.
    // Un autre charset souvent utilisé est utf-8
    byte[] bytes = "Ma chaîne".getBytes("windows-1252");
    Écrire du binaire en hexa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    char[] hexDigits = {'0', '1', ..., 'f'};
     
    char[] chars = new char[bytes.length*2];
    for(int i = 0; i < bytes.length; i++) {
      chars[2*i] = hexDigits[(bytes[i] >> 4) & 0xF];
      chars[2*i+1] = hexDigits[bytes[i] & 0xF];
    }
     
    String hex = new String(chars);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    byte[] bytes = laString.getBytes("UTF-8");
    StringBuilder b = new StringBuilder();
    Formatter f = new Formatter();
    for (byte b : bytes) 
       f.format("%02Xd",b)
    System.out.println(b.toString());

    windows-1252 est à déconseillé, tu n'a aucune garantie qu'il sera disponible sur la machine de destination de l'application, autant préférer UTF-8 ou ISO-8859-1 que toutes les JVM doivent fournir.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Par défaut
    tchize_, thelvin merci pour le coup de pouce je vais tester ça dans l'aprèsm.

    Bonne journée

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Par défaut
    Re ...

    j'ai donc testé le code de thelvin dans ma JSP de test ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <%!
    public String bin2hex(String s){
    		byte[] bytes = s.getBytes("utf-8");
    		char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
    		char[] chars = new char[bytes.length*2];
    		for(int i = 0; i < bytes.length; i++) {
    		  chars[2*i] = hexDigits[(bytes[i] >> 4) & 0xF];
    		  chars[2*i+1] = hexDigits[bytes[i] & 0xF];
    		}
    		String hex = new String(chars);
    		return hex;
    	}
    %>
    tomcat me retoune Unhandled exception type UnsupportedEncodingException
    pour la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    byte[] bytes = url.getBytes("utf-8");
    j'ai testé d'autre encodage mais c'est pareil ...

    Pour le script de tchize_ c'est pareil au niveau de l'appel à la fonction getBytes ... le code m'échappe un peu à vrai dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public String bin2hex(String s){
    byte[] bytes = s.getBytes("UTF-8");
    StringBuilder b = new StringBuilder();
    Formatter f = new Formatter();
    for (byte c : bytes) 
       f.format("%02Xd",c)
    System.out.println(b.toString());

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

Discussions similaires

  1. équivalence fonction de saisie c,c++ et php console
    Par vacknov dans le forum Langage
    Réponses: 3
    Dernier message: 10/10/2007, 15h16
  2. [FLASH MX] Problème flash et fonction mail() php
    Par proutcore dans le forum Flash
    Réponses: 7
    Dernier message: 21/05/2007, 12h21
  3. équivalent fonction mysql C en php
    Par splouf dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 22/01/2006, 19h41
  4. équivalent fonction mysql C en php
    Par splouf dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 13/01/2006, 14h23
  5. [Débutant] équivalent du include() php
    Par R3iTt0R dans le forum ASP
    Réponses: 5
    Dernier message: 07/07/2004, 11h46

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