Je tente de compresser une chaîne en Java comme le fait la fonction gzcompress de php. Mais je n'obtiens pas les mêmes tableaux d'octets en résultat.
Mon code php :
';
for ($i=0; $i';
}
?>
Le résultat :
Ceci est un test
[0] = 120
[1] = 156
[2] = 11
[3] = 201
[4] = 200
[5] = 44
[6] = 86
[7] = 0
[8] = 162
[9] = 68
[10] = 133
[11] = 146
[12] = 212
[13] = 226
[14] = 18
[15] = 0
[16] = 36
[17] = 115
[18] = 4
[19] = 246
Code Java :
public class Main {
public static byte[] compressString(String uncompressedString) throws IllegalArgumentException, IllegalStateException {
try {
byte[] utfEncodedBytes = uncompressedString.getBytes();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (GZIPOutputStream gzipOutputStream = new GZIPOutputStream(baos)) {
gzipOutputStream.write(utfEncodedBytes);
gzipOutputStream.finish();
}
return baos.toByteArray();
} catch (Exception e) {
throw new IllegalStateException("Échec de la compression GZIP : " + e, e);
}
}
public static void main(String[] args) {
String input = "Ceci est un test";
System.out.println("Entrée : " + input);
byte[] compressed = compressString(input);
for (int i = 0; i < compressed.length; i++) {
System.out.println("[" + i + "] = " + (compressed[i] & 0xFF));
}
}
}
Le résultat :
Entrée : Ceci est un test
[0] = 31
[1] = 139
[2] = 8
[3] = 0
[4] = 0
[5] = 0
[6] = 0
[7] = 0
[8] = 0
[9] = 0
[10] = 11
[11] = 201
[12] = 200
[13] = 44
[14] = 86
[15] = 0
[16] = 162
[17] = 68
[18] = 133
[19] = 146
[20] = 212
[21] = 226
[22] = 18
[23] = 0
[24] = 50
[25] = 159
[26] = 122
[27] = 192
[28] = 14
[29] = 0
[30] = 0
[31] = 0
Les parties intermédiaires des tableaux compressés sont les mêmes. Mais ils sont différents au début et à la fin.