manipulation tableau de byte et hexa
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:
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:
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:
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:
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