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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
byte[] response = card.Transmit(ba, 0, ba.length);
Le truc c'est qu'ensuite je ne sais pas trop comment manipuler ce tableau. Je m'explique.
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);
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();
	}
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
 
int octet1 = Integer.parseInt(Util.getHexString(response[44]),16);
...
if ((octet1 & 0x80) != 0) // je test le bit de poid fort
...
La encore je pourrais faire plus simple ?

Merci pour votre aide.

Cordialement


harf