Codage multibyte
Ce codage est utilisé entre autres pour le stockage du delta time
dans le format MIDI (temps séparant deux événements), et est particulièrement
adapté aux situations où l'on souhaite coder des nombres de taille
arbitrairement grande ou petite de façon efficace.
Le principe est très simple. Formellement :
- on commence par écrire en binaire le nombre à convertir
- on regroupe les bits par blocs de 7, en complètant éventuellement
le dernier bloc (contenant les bits de poids fort) avec des zéros
- on ajoute à gauche de chaque bloc un bit à 1 pour tous les blocs,
sauf le dernier (où l'on met le bit à 0)
Petits exemples :
décimal | binaire | résultat en hexa |
40 | 0101000 | 0x28 |
65540 | 100 0000000 0000100 | 0x04 0x80 0x84 |
J'espère que c'est suffisant. L'implémentation est assez simple.
Il y a un exemple dans le projet Bell (un player de MIDI Files pour
terminaux X!).