Pour un projet, je dois travailler avec différents types de fichiers provenant d'anciens jeux et logiciels associés - fichiers de configuration, sauvegardes, archives de ressources, etc. La plupart d'entre eux ne sont pas encore documentés, et il n'existe pas d'outils pour les utiliser, donc je dois inverser l'ingénierie des formats et créer mes propres bibliothèques pour les gérer.
Bien que je ne suppose pas qu'il y ait une grande demande pour la plupart, j'ai l'intention de publier les résultats de mes efforts. Existe-t-il des normes acceptées pour documenter les formats de fichiers? En regardant autour de vous, plusieurs styles sont utilisés: certains, comme la spécification du format de fichier .ZIP , sont très verbeux; d'autres, comme ceux sur XentaxWiki, sont beaucoup plus concis - je trouve certains d'entre eux difficiles à lire; celle que j'aime le mieux est cette description du système de fichiers de carte mémoire PlayStation 2 , qui comprend à la fois un texte descriptif détaillé et plusieurs `` cartes mémoire '' avec décalages et autres - elle correspond également le mieux à mon cas d'utilisation. Cela variera un peu pour différents formats, mais il semble qu'il devrait y avoir des principes généraux que je devrais essayer de suivre.
Edit: il me semble que je n'ai pas très bien expliqué ce que je veux faire. Permettez-moi de construire un exemple.
Je peux avoir un vieux logiciel qui stocke sa configuration dans un fichier `` binaire '' - une série de champs de bits, d'entiers, de chaînes et tout le reste collés et compris par le programme, mais pas lisibles par l'homme. Je déchiffre cela. Je souhaite documenter exactement quel est le format de ce fichier, d'une manière lisible par l'homme, comme spécification pour implémenter une bibliothèque pour analyser et modifier ce fichier. De plus, j'aimerais que cela soit facilement compris par d'autres personnes.
Il existe plusieurs façons d'écrire un tel document. L'exemple PKZIP ci-dessus est très verbeux et décrit principalement le format de fichier en texte libre. L'exemple PS2 donne des tableaux de types de valeurs, de décalages et de tailles, avec des commentaires détaillés sur ce qu'ils signifient tous. Beaucoup d'autres, comme ceux sur XentaxWiki, ne listent que les types et tailles de variables, avec peu ou pas de commentaires.
Je demande s'il existe une norme, semblable à un guide de style de codage, qui fournit des conseils sur la façon d'écrire ce type de documentation. Sinon, y a-t-il un excellent exemple bien connu que je devrais imiter? Sinon, quelqu'un peut-il au moins résumer quelques conseils utiles?
la source
struct
. Cela a très bien fonctionné.Réponses:
Un fichier binaire n'est qu'une séquence de bits disposés en unités logiques selon certaines règles . Ces règles sont généralement appelées grammaire . La grammaire peut être classée en quatre types (la hiérarchie de Chomsky ), et pour les grammaires hors contexte, vous devez utiliser la forme Backus-Naur étendue comme l'a souligné Matt Fenwick dans son commentaire. L'interprétation (ou la sémantique) de la séquence stockée dans le fichier peut être décrite verbalement ou à l'aide d'exemples de programmes bien annotés sérialisant et désérialisant les informations.
Pour en savoir plus sur la documentation des formats de fichiers binaires, suggérez de lire par exemple la norme ASN.1 .
la source
C'est étrange car une recherche rapide des formats de fichiers a fait apparaître un article Wikipedia (Liste des formats de fichiers) . Il comprend également plusieurs formats de données de jeux vidéo .
Il comprend également une large sélection de formats de supports de stockage de jeux vidéo .
Il n'y a de norme "officielle" nulle part. Étant donné que les formats de fichiers sont créés par une entreprise, l'entreprise décide du format de la documentation.
la source