Bonjour,

Afin de réduire la quantité d'informations à stocker je voudrais passer par le système suivant :

- un heure en minute (de 0 à 1440) sous la forme de 11 bits (ex 00000010000 = 16 minutes),
- un type de 0 à 7 sous la forme de 3 bits (ex 010 = type 2)

pour cela je veux concaténer les deux chaines de bits puis les transformer en tableau de char pour les stocker dans la base. Pour cela, je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
String bits = Integer.toBinaryString(time+(int)Math.pow(2,11)).substring(1) + Integer.toBinaryString(type+(int)Math.pow(2,3)).substring(1) + "00"
bits représente donc 16 caractères 0 ou 1.

Ensuite je transforme en tableau de 2 char :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
char[] chars = new char[2];
		chars [0] = (char)Integer.parseInt(bits.substring(0,8), 2);
		chars [1] = (char)Integer.parseInt(bits.substring(8,16), 2);
Je fais cela plusieurs fois, en récuperant tous les tableaux de char dans un string

Code : Sélectionner tout - Visualiser dans une fenêtre à part
String toSave += String.valueOf(charTo);
Jusqu'ici tout va bien...

Par contre quand je veux sotcker ca dans la base (mysql) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
statement.setObject(3,activities,Types.VARCHAR);
il me rajoute des octets "parasites", (exemple, pour la caractère 0xa4 il marque 0xc382c2a4)

J'ai essayé aussi ca,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
statement.setBytes(3,activities.getBytes());
La j'ai moins de "parasites" mais j'en ai toujours...

Je pense qu'il y a une raison pour qu'il soit la mais je ne trouve rien qui m'aiderai à résoudre le soucis...

Si quelqu'un pouvait me donner un coup de main ca serait sympa !

Merci d'avance.