Je n'ai pas l'impression de m'être trompé sur mes readVarInt(), readVarShort() et readVarLong().
Quand je compare avec les prix en HDV, j'ai tout bon.
J'ai testé (aléatoirement) plusieurs identifiants lus comme ça, tout me semblait bon.
Si j'ai bien compris le mécanisme, on regroupe les bytes tant qu'ils commencent pas un "1".
Donc en hexa, on prend les blocs supérieurs à 0x80. (1000 0000)
Dans l'exemple initial, la liste des effets, j'ai : 00:01:1a:40:8b:01:01
- 00:01 : Taille du vecteur, Short qui vaut 1.
- 1a:40 : TypeId, Short qui vaut 6720.
- 8b:01 : VarShort. Le premier bit du premier octet vaut "1", alors on doit prendre le suivant.
Fini. Mais j'ai mon "01" qui traine, je ne comprends pas pourquoi.
J'ai même switché avec les implémentations de LaBot. J'obtiens les même résultats.
On est d'accord que quand il y a des classes imbriquées dans d'autres classes, on n'a pas de checksum ou truc du genre en fin d'imbrication ? J'ai l'impression que c'est quelque chose du genre, mais je ne vois aucun code qui va dans ce sens.