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
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
et voila la valeur la console
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);
Valeur en Binaire : 10000000
Valeur en Hexadecimal : 80
resultat :
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));en fait la fonction toString de la class Integer permet de définir la basse de sortieValeur en Binaire : 11011
Valeur en Hexadecimal : 1b
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"
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 :
Écrire du binaire en hexa :
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");
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);
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.
tchize_, thelvin merci pour le coup de pouceje vais tester ça dans l'aprèsm.
Bonne journée![]()
Re ...
j'ai donc testé le code de thelvin dans ma JSP de test ...
tomcat me retoune Unhandled exception type UnsupportedEncodingException
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; } %>
pour la ligne
j'ai testé d'autre encodage mais c'est pareil ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 byte[] bytes = url.getBytes("utf-8");
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());
Euh oui, c'est normal. Il suffit de l'entourer d'un try/catch. C'est une erreur de compilation, tu peux même mettre le peu connu charset "tralalalalère", l'erreur sera la même. (Par contre, celui-là générera une erreur au runtime, après que tu aies corrigé l'erreur de compilation.)
Au passage, coder directement dans une JSP est assez obsolète -_-°.
C'est dommage qu'il t'échappe, car il est plus clair et moins sujet aux bugs que le mien.Pour le script de tchize_ c'est pareil au niveau de l'appel à la fonction getBytes ... le code m'échappe un peu à vrai dire
J'oublie toujours de me servir de String.format() pour faire de l'hexa, mais c'est encore le plus simple.
En gros, il crée un StringBuilder vide, puis pour chaque octet, il formate cet octet en un nombre hexadécimal non signé de 2 chiffres, paddé avec un zéro si besoin, puis il concatène le résultat à la fin du StringBuilder. Simple et direct.
ça fonctionne
Merci du coup de pouce
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 url){ byte[] bytes; try{ bytes = url.getBytes("utf-8"); StringBuilder b = new StringBuilder(); Formatter f = new Formatter(); for (byte c : bytes) f.format("%02X",c); // pas %02Xd return (f.toString()); // f et non b }catch(Exception e){return "BUG";} }![]()
Mon Dieu que c'est moche
Code : Sélectionner tout - Visualiser dans une fenêtre à part }catch(Exception e){return "BUG";}![]()
Partager