Comment lire un fichier qui contient de l'hexadecimal

Signaler
Messages postés
163
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
3 février 2012
-
Messages postés
163
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
3 février 2012
-
Bonjour,

j'ai un fichier .sol (ce sont des shared objects pour flash) qui est construit comme expliqué sur ce site : http://www.osflash.org/amf/envelopes/sharedobject

Format

Field |Data Type |Example |Description |----
Version?, byte[2], “\x00\xbf”, Unknown, ----
Length, uint32_be, “\x00\x00\x00\x25” (37), Length of the *rest* of the .SOL file (filesize - 6), ----
Signature?, byte[10], “TCSO\x00\x04\x00\x00\x00\x00”, Unknown, ----
Root Object Name, UTF-8 string, “\x00\x06my_sol” (”my_sol”), Name of the root object (uint16_be length prefixed UTF-8), ----
Padding?, byte[4], “\x00\x00\x00\x00”, Unknown

... and then name:value pairs until the end of file, as such:

<gras>Field |Data Type |Example |Description |</gras>----
Name

, UTF-8 string

, “\x00\x04name” (”name”)

, Name of the property

, ----
Value

, AMF

, “\x02\x00\x05value” (”value”)

, AMF value with type code

, ----
Padding

, byte

, “\x00”

, NULL byte

Voici ma question :
Comment pourrais je faire pour récupérer les champs du fichier

Comme exemple voici mon fichier :

Si quelqu'un a une solution pour m'aiguiller ca serait super chouette car la je suis au fond

Merci. ++ Nexus Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

2 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut :

Dans le cas des fichiers structurées je te conseille d'utiliser les structures où chaque champs de cette dernière correspond à une information.

De plus pour lire les fichier binaire (non ASCII) il faut que les ouvre en mode Binaire.

typedef struct _ENTETE {
     unsigned char Version [2];
     // ...
} ENTETE;

typedef struct _BODY {
    // ...
} BODY;

FILE * Fp = fopen ("file.sol", "rb");
if (!Fp)
    return;

// Pour lire utiliser la fonction fread
ENTETE e;
fread ((ENTETE *)&e, sizeof (ENTETE), 1, Fp);

// Et ainsi de suite ...
Messages postés
163
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
3 février 2012

Ok merci de cette information

Une fois la structure faite les zones de texte sont codés en codes hexa dans l'AnsiString.

Dernier petit problème j'ai essayé avec un sprintf("%s"....) mais cela ne me redonne pas non plus mon texte.

Merci. ++ Nexus Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.