formatos binarios normalmente no se especifican con facilidad; rara vez se especifican en un lenguaje de alto nivel marcado como ASN.1 (y tales especificaciones no pueden ser retro-equipados para formatos binarios existentes). El proyecto bdec es un intento de especificar formatos binarios arbitrarios en un lenguaje de marcas, y crear un decodificador y codificador automáticamente para ese formato binario dada la especificación de alto nivel.
La especificación XML bdec utiliza construcciones basadas en las construcciones que se encuentran en ASN.1.
Uso:
La biblioteca bdec consiste en una decodificación / biblioteca de codificación y decodificación de línea de comandos y aplicaciones de codificación. Dada una especificación, la aplicación de línea de comandos creará una representación XML de los datos contenidos en el archivo binario, y puede (para algunas representaciones) convertir el xml de nuevo a binario.
La biblioteca es capaz de crear tales salida XML, o, opcionalmente, un objeto de Python que representa las construcciones contenidas en los datos binarios.
Por ejemplo; la representación XML de un sector de arranque FAT generada por correr:
dd if = / dev / sda1 bs = 512 count = 1 | bootsector.xml decodificación
Características
- Es fácil escribir rápidamente (y leer) una especificación
- No hay necesidad de escribir un decodificador personalizado (todas las condiciones de error se manejan internamente; decodificar bien pasa o no) .
- La aplicación de línea de comandos permite la inspección visual de los archivos problemáticos.
- Unicode consciente, little-endian / big-endian conciencia
- Especifique los campos de abajo para el bit (por ejemplo: indicadores de bits individuales)
¿Cuál es nuevo en esta versión:.
- estructuras de datos de codificación a binaria es ahora compatible
- Esto incluye la codificación de las instancias de Python, XML y estructuras C.
- Especificaciones ahora se pueden dividir en varios archivos simplemente pasando todos los archivos de especificación a la decodificación / codificación / compilar programas.
¿Cuál es nuevo en la versión 0.5.1:
- Este comunicado informa de la entrada correcta cuando hay una falta de entrada de referencia.
- Se corrige un Mako compilar excepción cuando se ejecuta de un huevo (ignora .pyc archivos).
¿Qué hay de nuevo en la versión 0.5.0:
- aceleraciones Compilation (alrededor de cinco veces) y decodificación Python aceleraciones (hasta 30 veces).
- opciones compiladas están representados por una "enumeración" y una "unión".
- Expresiones ahora pueden hacer referencia directamente a las entradas de la elección para hacer referencia a la opción decodificada.
- Una nueva sección de 'consejos' se añadió en la documentación, que incluye el ':'. Atisbo entrada oculta li>
- Las entradas cuyos valores se transmiten dentro y fuera de una entrada debido a las expresiones fueron fijos.
- campos endian pequeño con un valor esperado en las especificaciones compilados fueron fijadas.
¿Cuál es nuevo en la versión 0.4.1:
- El proyecto puede ser compilado a un huevo (incluyendo plantillas).
- El C generada se puede utilizar desde los programas en C ++ (por ejemplo extern c).
- 'bdecode' y 'bcompile' se instalan como parte del huevo instalar.
- nombres de los tipos de lenguaje C Generado son consistentes a través de carreras.
¿Cuál es nuevo en la versión 0.4.0:
- Esta versión permite a las entradas comunes a dar otro nombre .
- Se mejora la legibilidad del código C generado.
- No incluirá las estructuras de datos innecesarios en las cabeceras C.
- Se ha cambiado a la LGPL.
- Hay actualizaciones de la documentación, varios arreglos en decodificadores C, y una solución para la especificación de MP3.
Comentarios que no se encuentran