Bonjour,
J'ai un petit problème avec l'utilisation d'un XOR.
En effet, j'ai deux String qui représentent en réalité chacun un code héxadécimal (mais bon.. qu'importe), et je dois faire un XOR entre ces deux chaines.
Ma première chaine est la suivante:
String o1 = "63cc5fb23fbc4de060e38437898de623"
Ma seconde: String d2 = "673000114F38fc00"
J'ai lu que pour faire le XOR il fallait au préalable convertir la chaine en un String de binaire, puis la parser en tant que Long et faire ensuite le XOR.
Ainsi, cela donne le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 //Conversion de o1 en binaire StringBuffer buffo1 = new StringBuffer(); for (int i = 0; i < o1.length(); i++) { buffo1.append(StringUtils.leftPad(Integer.toBinaryString(Integer .parseInt(String.valueOf(o1.charAt(i)), 16)), 4, "0")); } StringBuffer buffd2 = new StringBuffer(); for (int i = 0; i < d2.length(); i++) { buffd2.append(StringUtils.leftPad(Integer.toBinaryString(Integer .parseInt(String.valueOf(d2.charAt(i)), 16)), 4, "0")); }
J'ai donc bien deux buffers contenant ma chaine représentée en binaire
Il ne me reste ainsi qu'à faire le XOR dessus:
Le problème c'est que lors du parseLong de mon buffer de mon premier String, celui-ci étant trop long, cela plante...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 long lbuf2 = Long.parseLong(buffd2.toString(), 2); long lbuffo1 = Long.parseLong(buffo1.toString(), 2); long resultXOR = lbuf2 ^ lbuffo1;
java.lang.NumberFormatException: For input string: "01100011110011000101111110110010001111111011110001001101111000000110000011100011100001000011011110001001100011011110011000100011"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
Alors du coup, comment puis-je faire ??
Je ne sais vers quoi partir, je suis un peu dans la panade
Réaliser ce genre de chose n'est pas habituel pour moi, et du coup, je galère un peu là
Je vous remercie tous pour votre aide
Partager