Une valeur peut être un paquet de bits qui n'est pas forcément un octet.
Ainsi :
Une statistique doit être établie sur la fréquence d'apparition d'un octet dans un flux :
Cet algorithme n'est pas une norme : rien ne définit quelles sont les plages d'encodage - nombre de bits minimal - et quelle statistique employer.
Ce paramétrage varie en fonction de l'application utilisant l'algorithme. Par exemple, la compression pour les images au format Tagged Information File Format (TIFF) utilise la statistique du Comité Consultatif International pour le Téléphone et le Télégraphe (CCITT) établie pour les télécopies.
C'est la convention retenue par défaut par Up ! System dès lors que l'algorithme Huffman n'est pas encapsulé dans une norme en possédant une particulière.
La compression est réinitialisée à chaque ligne et, par convention, chaque ligne commence par un pixel blanc. Sinon, il faut encoder une longueur de 0 pixel blanc.
Une longueur peut être soit terminale - il existe un code - soit non terminale - elle est divisée en sous longueurs de tailles maximales et donc en plusieurs codes. Par exemple :
Les codes des longueurs sont ensuite assemblés en octets.
Code en binaire. | Est terminal. | Longueur. |
00110101 | Oui | 0 |
000111 | Oui | 1 |
0111 | Oui | 2 |
1000 | Oui | 3 |
1011 | Oui | 4 |
1100 | Oui | 5 |
1110 | Oui | 6 |
1111 | Oui | 7 |
10011 | Oui | 8 |
10100 | Oui | 9 |
00111 | Oui | 10 |
01000 | Oui | 11 |
001000 | Oui | 12 |
000011 | Oui | 13 |
110100 | Oui | 14 |
110101 | Oui | 15 |
101010 | Oui | 16 |
101011 | Oui | 17 |
0100111 | Oui | 18 |
0001100 | Oui | 19 |
0001000 | Oui | 20 |
0010111 | Oui | 21 |
0000011 | Oui | 22 |
0000100 | Oui | 23 |
0101000 | Oui | 24 |
0101011 | Oui | 25 |
0010011 | Oui | 26 |
0100100 | Oui | 27 |
0011000 | Oui | 28 |
00000010 | Oui | 29 |
00000011 | Oui | 30 |
00011010 | Oui | 31 |
00011011 | Oui | 32 |
00010010 | Oui | 33 |
00010011 | Oui | 34 |
00010100 | Oui | 35 |
00010101 | Oui | 36 |
00010110 | Oui | 37 |
00010111 | Oui | 38 |
00101000 | Oui | 39 |
00101001 | Oui | 40 |
00101010 | Oui | 41 |
00101011 | Oui | 42 |
00101100 | Oui | 43 |
00101101 | Oui | 44 |
00000100 | Oui | 45 |
00000101 | Oui | 46 |
00001010 | Oui | 47 |
00001011 | Oui | 48 |
01010010 | Oui | 49 |
01010011 | Oui | 50 |
01010100 | Oui | 51 |
01010101 | Oui | 52 |
00100100 | Oui | 53 |
00100101 | Oui | 54 |
01011000 | Oui | 55 |
01011001 | Oui | 56 |
01011010 | Oui | 57 |
01011011 | Oui | 58 |
01001010 | Oui | 59 |
01001011 | Oui | 60 |
00110010 | Oui | 61 |
00110011 | Oui | 62 |
00110100 | Oui | 63 |
11011 | Non | 64 |
10010 | Non | 128 |
010111 | Non | 192 |
0110111 | Non | 256 |
00110110 | Non | 320 |
00110111 | Non | 384 |
01100100 | Non | 448 |
01100101 | Non | 512 |
01101000 | Non | 576 |
01100111 | Non | 640 |
011001100 | Non | 704 |
011001101 | Non | 768 |
011010010 | Non | 832 |
011010011 | Non | 896 |
011010100 | Non | 960 |
011010101 | Non | 1024 |
011010110 | Non | 1088 |
011010111 | Non | 1152 |
011011000 | Non | 1216 |
011011001 | Non | 1280 |
011011010 | Non | 1344 |
011011011 | Non | 1408 |
010011000 | Non | 1472 |
010011001 | Non | 1536 |
010011010 | Non | 1600 |
011000 | Non | 1664 |
010011011 | Non | 1728 |
00000001000 | Non | 1792 |
00000001100 | Non | 1856 |
00000001101 | Non | 1920 |
000000010010 | Non | 1984 |
000000010011 | Non | 2048 |
000000010100 | Non | 2112 |
000000010101 | Non | 2176 |
000000010110 | Non | 2240 |
000000010111 | Non | 2304 |
000000011100 | Non | 2368 |
000000011101 | Non | 2432 |
000000011110 | Non | 2496 |
000000011111 | Non | 2560 |
000000000001 | Oui | Fin de ligne |
Code en binaire. | Est terminal. | Longueur. |
0000110111 | Oui | 0 |
010 | Oui | 1 |
11 | Oui | 2 |
10 | Oui | 3 |
011 | Oui | 4 |
0011 | Oui | 5 |
0010 | Oui | 6 |
00011 | Oui | 7 |
000101 | Oui | 8 |
000100 | Oui | 9 |
0000100 | Oui | 10 |
0000101 | Oui | 11 |
0000111 | Oui | 12 |
00000100 | Oui | 13 |
00000111 | Oui | 14 |
000011000 | Oui | 15 |
0000010111 | Oui | 16 |
0000011000 | Oui | 17 |
0000001000 | Oui | 18 |
00001100111 | Oui | 19 |
00001101000 | Oui | 20 |
00001101100 | Oui | 21 |
00000110111 | Oui | 22 |
00000101000 | Oui | 23 |
00000010111 | Oui | 24 |
00000011000 | Oui | 25 |
000011001010 | Oui | 26 |
000011001011 | Oui | 27 |
000011001100 | Oui | 28 |
000011001101 | Oui | 29 |
000001101000 | Oui | 30 |
000001101001 | Oui | 31 |
000001101010 | Oui | 32 |
000001101011 | Oui | 33 |
000011010010 | Oui | 34 |
000011010011 | Oui | 35 |
000011010100 | Oui | 36 |
000011010101 | Oui | 37 |
000011010110 | Oui | 38 |
000011010111 | Oui | 39 |
000001101100 | Oui | 40 |
000001101101 | Oui | 41 |
000011011010 | Oui | 42 |
000011011011 | Oui | 43 |
000001010100 | Oui | 44 |
000001010101 | Oui | 45 |
000001010110 | Oui | 46 |
000001010111 | Oui | 47 |
000001100100 | Oui | 48 |
000001100101 | Oui | 49 |
000001010010 | Oui | 50 |
000001010011 | Oui | 51 |
000000100100 | Oui | 52 |
000000110111 | Oui | 53 |
000000111000 | Oui | 54 |
000000100111 | Oui | 55 |
000000101000 | Oui | 56 |
000001011000 | Oui | 57 |
000001011001 | Oui | 58 |
000000101011 | Oui | 59 |
000000101100 | Oui | 60 |
000001011010 | Oui | 61 |
000001100110 | Oui | 62 |
000001100111 | Oui | 63 |
0000001111 | Non | 64 |
000011001000 | Non | 128 |
000011001001 | Non | 192 |
000001011011 | Non | 256 |
000000110011 | Non | 320 |
000000110100 | Non | 384 |
000000110101 | Non | 448 |
0000001101100 | Non | 512 |
0000001101101 | Non | 576 |
0000001001010 | Non | 640 |
0000001001011 | Non | 704 |
0000001001100 | Non | 768 |
0000001001101 | Non | 832 |
0000001110010 | Non | 896 |
0000001110011 | Non | 960 |
0000001110100 | Non | 1024 |
0000001110101 | Non | 1088 |
0000001110110 | Non | 1152 |
0000001110111 | Non | 1216 |
0000001010010 | Non | 1280 |
0000001010011 | Non | 1344 |
0000001010100 | Non | 1408 |
0000001010101 | Non | 1472 |
0000001011010 | Non | 1536 |
0000001011011 | Non | 1600 |
0000001100100 | Non | 1664 |
0000001100101 | Non | 1728 |
00000001000 | Non | 1792 |
00000001100 | Non | 1856 |
00000001101 | Non | 1920 |
000000010010 | Non | 1984 |
000000010011 | Non | 2048 |
000000010100 | Non | 2112 |
000000010101 | Non | 2176 |
000000010110 | Non | 2240 |
000000010111 | Non | 2304 |
000000011100 | Non | 2368 |
000000011101 | Non | 2432 |
000000011110 | Non | 2496 |
000000011111 | Non | 2560 |
00000000000 | OUi | Fin de ligne |