Bonjour a tous,
voila j'essaye d'écrire un petit programme qui lit les tag ID3 d'un fichier mp3,
j'ai bien regardé la spec du format, et j'ai la structure suivante pour récupere le header d'un tag :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
typedef struct {
  unsigned char		id[3];
  unsigned char		revision[2];
  unsigned char		flags;
  unsigned int		size;
} ID3V2_header_t;
Le header fait donc exactement 10 bytes, seulement voila, alors que ma structure devait en faire 10 aussi (3 + 2 + 1 + 4), lorque que je fait
sizeof(ID3V2_header_t) j'obtient 12 ...

J'ai regardé sur la FAQ C ou il est dit que cela peut venir d'un probleme d'alignement des bits ? mais comment y remédier ? Est qu'il faut que je passe par l'operateur ":" pour spécifier explicitement la taille de chacun de mes champs en bits ? cad :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
typedef struct {
  unsigned char		id[3] : 24
  unsigned char		revision[2] : 16
  unsigned char		flags : 8
  unsigned int		size : 32
} ID3V2_header_t;
?

Voila, tout aide sera la bienvennue
(sachant que j'ai deja un autre pb en rab, mais je le garde pour le prochain post )

PS : si vous voulez plus d'informations, voila un lien vers la spec des tags :
http://www.id3.org/id3v2.3.0.html