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 :
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
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;
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
Partager