He estado leyendo el SWF format disponible en el sitio de Adobe y se menciona que con el fin de ahorrar espacio, los bits variables se utilizan para los enteros de la tienda o flotadores (página 17 del PDF)Lectura de datos de bits alineados
tengo siempre trabajó con datos alineados con bytes, por lo que no le dio mucha importancia a los archivos que están alineados con los bits, o tienen una alineación variable donde la información se almacena en cada byte.
Así, por ejemplo, puede tener una estructura que contenga cuatro enteros de 13 bits almacenados secuencialmente (en lugar de almacenarlos como cuatro enteros de 16 bits).
Los primeros 13 bits son el primer entero, los siguientes 13 bits son el segundo entero, y así sucesivamente. Rellena el último byte apropiado para hacer que la estructura esté alineada con byte con el resto del archivo, de modo que los 52 bits se rellenarán a 56 bits, requiriendo 7 bytes para almacenar esos cuatro enteros en oposición a 8 bytes.
- ¿Cómo me acerco a este tipo de problema?
- ¿Cómo puedo trabajar con una secuencia de bytes en el nivel de bit?
- ¿Hay algo que pueda usar para ayudar a que sea más fácil trabajar con estos datos?
Imagino que la solución se reduce a usar operaciones de bits en matrices de bytes.
Una solución de ejemplo para analizar los cuatro enteros de 13 bits sería bueno también para demostrar el uso de su método sugerido.
.. porque no puedo darle una respuesta completa, tal vez al menos apuntarle a 'BitArray' ayudará :) –
Por lo general, el enfoque es mantener un buffer de bits en un uint o ulong, extrayendo lo que necesita y cambiando en un nuevo byte de entrada cuando no hay suficientes bits en el búfer. – harold