Les fonctions de somme de contrôle
Ces fonctions ne sont pas liées à la compression mais sont exportées quand même car elles peuvent être utiles dans les applications utilisant la bibliothèque de compression.
ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len); |
Mettre à jour une somme de contrôle Adler-32 en cours d'exécution avec les octets buf[0..len-1] et renvoyer la somme de contrôle mise à jour. Une valeur Adler-32 est comprise dans l'intervalle d'un entier non signé de 32 bits. Si buf est Z_NULL, cette fonction renvoie la valeur initiale requise pour la somme de contrôle.
Une somme de contrôle Adler-32 est presque aussi fiable qu'un CRC-32 mais peut être calculée beaucoup plus rapidement.
Exemple d'utilisation :
ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len); |
Identique à adler32(), mais avec une longueur size_t.
ZEXTERN uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, z_off_t len2); |
Combinez deux sommes de contrôle Adler-32 en une seulement. Pour deux séquences d'octets, seq1 et seq2 avec des longueurs len1 et len2, des sommes de contrôle Adler-32 ont été calculées pour chacune d'elles, adler1 et adler2. adler32_combine() renvoie la somme de contrôle Adler-32 de seq1 et seq2 concaténées, ne nécessitant que adler1, adler2 et len2. Notez que le type z_off_t (comme off_t) est un entier signé. Si len2 est négatif, le résultat n'a aucune signification ni utilité.
ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len); |
Mettre à jour un CRC-32 en cours d'exécution avec les octets buf[0..len-1] et renvoyer le CRC-32 mis à jour. Une valeur CRC-32 est comprise dans la plage d'un entier non signé de 32 bits. Si buf est Z_NULL, cette fonction renvoie la valeur initiale requise pour le crc. Le pré-conditionnement et le post-conditionnement (complément à un) sont effectués dans cette fonction, ils ne doivent donc pas être effectués par l'application.
Exemple d'utilisation :
ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf, z_size_t len); |
Identique à crc32(), mais avec une longueur size_t.
ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2); |
Combinez deux valeurs de contrôle CRC-32 en une seule. Pour deux séquences d'octets, seq1 et seq2 avec des longueurs len1 et len2, des valeurs de contrôle CRC-32 ont été calculées pour chacune d'elles, crc1 et crc2. crc32_combine() renvoie la valeur de contrôle CRC-32 de seq1 et seq2 concaténées, ne nécessitant que crc1, crc2 et len2. len2 doit être non négatif.
ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2); |
Renvoie l'opérateur correspondant à la longueur len2, à utiliser avec crc32_combine_op(). len2 doit être non négatif.
ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op); |
Donne le même résultat que crc32_combine(), en utilisant op à la place de len2. op est généré à partir de len2 par crc32_combine_gen(). Ce sera plus rapide que crc32_combine() si l'op généré est utilisé plus d'une fois.