Petit probleme String -> Ascii -> byte
Résolu/Fermé
mariostar27
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
-
18 mars 2010 à 11:06
mariostar27 Messages postés 391 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 21 août 2015 - 19 mars 2010 à 14:46
mariostar27 Messages postés 391 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 21 août 2015 - 19 mars 2010 à 14:46
A voir également:
- Petit probleme String -> Ascii -> byte
- Caractère ascii - Guide
- Malware byte - Télécharger - Antivirus & Antimalwares
- Petit 3 ✓ - Forum Word
- Excel trier du plus grand au plus petit - Guide
- \N ascii - Forum Programmation
6 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
18 mars 2010 à 13:44
18 mars 2010 à 13:44
Bonjour,
Normalement, la méthode 'parseInt' peut recevoir deux arguments, dont le premier est la base à utiliser pour parser l'entier, et le second, l'entier à parser.
Dans ton cas donc, ton code se transforme de la manière suivante:
Cela devrait donc corriger ton code pour fonctionner.
Normalement, la méthode 'parseInt' peut recevoir deux arguments, dont le premier est la base à utiliser pour parser l'entier, et le second, l'entier à parser.
Dans ton cas donc, ton code se transforme de la manière suivante:
(byte) Integer.parseInt(16,Integer.toHexString(heure));
Cela devrait donc corriger ton code pour fonctionner.
mariostar27
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
26
Modifié par mariostar27 le 18/03/2010 à 14:12
Modifié par mariostar27 le 18/03/2010 à 14:12
Je te remercie kij_82 par contre le 16 se met en 2eme argument de la méthode parseInt()/
Malheureusement ton code ne fonctionne pas. si Integer.toHexString() retourne une valeur en chiffre ( 10, 22, 38, etc...), cela fonctionne. par contre, B, 1A, etc..., cette méthode ne fonctionne plus.
il faudrait faire un truk comme ceci :
11 qui devient en ASCII B puis l'insérer dans un byte comme ceci : 0x0B
gwennael
Malheureusement ton code ne fonctionne pas. si Integer.toHexString() retourne une valeur en chiffre ( 10, 22, 38, etc...), cela fonctionne. par contre, B, 1A, etc..., cette méthode ne fonctionne plus.
il faudrait faire un truk comme ceci :
11 qui devient en ASCII B puis l'insérer dans un byte comme ceci : 0x0B
gwennael
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
18 mars 2010 à 14:17
18 mars 2010 à 14:17
Autant pour moi pour l'erreur, c'est effectivement en second que vient la base.
En quoi ça ne marche pas ? Tu as une exception (ce qui m'étonnerai j'ai testé chez moi), ou simplement tu n'obtiens pas le résultat escompté ?
En quoi ça ne marche pas ? Tu as une exception (ce qui m'étonnerai j'ai testé chez moi), ou simplement tu n'obtiens pas le résultat escompté ?
mariostar27
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
26
18 mars 2010 à 14:27
18 mars 2010 à 14:27
dans ton code, (byte) Integer.parseInt(16,Integer.toHexString(heure));
remplace heure par 15. il te retournera 15.
j'ai effectuer ceci :
h et c n'auront pas la même valeur (même si l'un est un String, l'autre un byte).
il me faut la valeur de h pour la mettre dans un byte. un byte c un entier mais on peut l'entrer comme ceci :
et donc, je souhaite que la valeur b remplace le 0b.
remplace heure par 15. il te retournera 15.
j'ai effectuer ceci :
String h = Integer.toHexString(heure); System.out.println(h); byte c = (byte) Integer.parseInt(Integer.toHexString(15), 16); System.out.println(c);
h et c n'auront pas la même valeur (même si l'un est un String, l'autre un byte).
il me faut la valeur de h pour la mettre dans un byte. un byte c un entier mais on peut l'entrer comme ceci :
byte b = 0x0b;
et donc, je souhaite que la valeur b remplace le 0b.
mariostar27
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
26
18 mars 2010 à 15:05
18 mars 2010 à 15:05
il faut donc :
11 -> en ASCII -> b -> en byte -> 0x0b
11 -> en ASCII -> b -> en byte -> 0x0b
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mariostar27
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
26
18 mars 2010 à 15:32
18 mars 2010 à 15:32
il faut passé de 11 à b puis à 0x0b
de 26 à 1a puis à 0x1a
de 32 à 20 puis à 0x20
des valeur comme celle si.
une idée ???
de 26 à 1a puis à 0x1a
de 32 à 20 puis à 0x20
des valeur comme celle si.
une idée ???
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
Modifié par kij_82 le 18/03/2010 à 16:42
Modifié par kij_82 le 18/03/2010 à 16:42
Et c'est quoi l'intérêt de faire ça ?
0x0b vaut la même chose que 11, sauf que ce n'est pas exprimé dans la même base.
J'ai l'impression que tu cherches à faire un truc pas forcément utile.
Si c'est vraiment ce que tu souhaite, le plus simple reste encore de faire un tableau dans lequel chaque index retourne la valeur hexadécimal que tu cherche à obtenir
Un peu de la sorte:
byte tab[] { 0x01, 0x02, 0x03, 0x04, 0x05, ..., 0x1A, ... }
Et où : tab[10] vaudrait donc 0x0B. (10 pour l'index puisque 11 - 1)
Mais pour les années (grand chiffre), cela va poser problème.
Pour en revenir au fait que je comprenne pas trop l'utilité de ce que tu fais, exécute les lignes de code ci-dessous:
0x0b vaut la même chose que 11, sauf que ce n'est pas exprimé dans la même base.
J'ai l'impression que tu cherches à faire un truc pas forcément utile.
Si c'est vraiment ce que tu souhaite, le plus simple reste encore de faire un tableau dans lequel chaque index retourne la valeur hexadécimal que tu cherche à obtenir
Un peu de la sorte:
byte tab[] { 0x01, 0x02, 0x03, 0x04, 0x05, ..., 0x1A, ... }
Et où : tab[10] vaudrait donc 0x0B. (10 pour l'index puisque 11 - 1)
Mais pour les années (grand chiffre), cela va poser problème.
Pour en revenir au fait que je comprenne pas trop l'utilité de ce que tu fais, exécute les lignes de code ci-dessous:
heure = 23; System.out.println(Integer.toHexString(heure)); Integer myI = Integer.valueOf(Integer.toHexString(heure),16); System.out.println("MyI = "+myI.byteValue()); System.out.println("Bybyte : "+0x17);
mariostar27
Messages postés
391
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
21 août 2015
26
19 mars 2010 à 14:46
19 mars 2010 à 14:46
exactement !!!
Du coup je n'ai pas besoin de faire de conversion.
Vraiment désolé kij-82 merci de m'avoir aider. Enfin comme personne ne répondait cela va peut être aider certaine personne.
encore merci !!!
byte c = 23; équivaut à byte c = 0x17.
Du coup je n'ai pas besoin de faire de conversion.
Vraiment désolé kij-82 merci de m'avoir aider. Enfin comme personne ne répondait cela va peut être aider certaine personne.
encore merci !!!