Title

Etant donné que ces valeurs encodées sont des entiers compris entre 0 et 4095 (inclus), elles peuvent se représenter au moyen d’entiers de 12 bits. Malheureusement, la bibliothèque Java n’offre que des flots d’entiers de 8 bits. Nous mettons donc à votre disposition la classe Bits12OutputStream qui permet de passer de l’un à l’autre. Son constructeur accepte un flot sous-jacent de 8 bits, tandis que sa méthode writeU12 accepte une valeur de 12 bits non signée, c-à-d comprise entre 0 et 4095.

Le principe de fonctionnement de Bits12OutputStream est relativement simple?: elle découpe chaque paire successive de valeurs de 12 bits qu’elle reçoit en trois valeurs de 8 bits qu’elle écrit dans le flot sous-jacent. Si un nombre impair de valeurs de 12 bits a été fourni au moment où sa méthode close est appelée, elle ajoute 4 bits nuls de remplissage (padding) à la fin du flot pour obtenir un multiple de 8 bits.

Lors de l’écriture de la méthode write, faites bien attention au fait qu’elle peut recevoir une valeur de type int quelconque mais ne doit considérer que son octet de poids faible. Dès lors, il est conseillé de l’écrire comme ci-dessous, afin d’obtenir, dans b, l’octet à effectivement écrire?:

Liens

Lien 1

Lien 2