Bonjour,
Je cherche à récupèrer des informations avec jpcsc sur une carte et je récupère ainsi un tableau de 62 byte avec une commande du type
Le truc c'est qu'ensuite je ne sais pas trop comment manipuler ce tableau. Je m'explique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part byte[] response = card.Transmit(ba, 0, ba.length);
4 des cellules de ce tableau contienne un numéro. En hexa, je peux avoir donc entre 0 et FF FF FF FF donc 0 et 4294967295 en décimal. Sauf que quand j'inspecte ces 4 cellules, j'ai des nombres positifs et négatifs, sans doute parce que byte ne va que jusqu'à + 128.
j'ai trouvé une solution en convertissant ma portion de 4 cellule en une String qui contient la valeur en hexa puis en reconvertissant cette string en int... mais j'ai l'impression d'avoir monter une usine à gaz :
Mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 //bTemp est un tableau de 4 byte dans lequel j'ai copié les cellules // de response[] qui m'intéresse. idCard = Integer.parseInt(Util.getHexString(bTemp),16);Pour traiter d'autres infos sur la carte, j'ai besoin de travaller sur les bits de chaque octet. J'ai fais la même conversion. Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // trouvé sur le forum developpez.net public static String getHexString(byte[] bytes) { StringBuilder sb = new StringBuilder(bytes.length*2); for (byte b : bytes) { sb.append( String.format("%x", b) ); } return sb.toString(); }
La encore je pourrais faire plus simple ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int octet1 = Integer.parseInt(Util.getHexString(response[44]),16); ... if ((octet1 & 0x80) != 0) // je test le bit de poid fort ...
Merci pour votre aide.
Cordialement
harf
Partager