Le prbleme viens du fait que tu ouvres le texte en mode texte et non en binaire.
Une méthode qui me vient à l'esprit au saut du lit (y a donc surement plus propre

)
La premiere chose a faire, c'est de chopper le début de la séquence codant les drapeaux. Pour cela, je pense qu'il faut lire le fichier par bloc de 16octets et rechercher la premiere occurence de la chaine "0x00 0x00 0x00 0x00 0x00 0xff 0xff 0xff 0xff 0x00 0x07 0x00 0x00 0x00 0x00 0x00 0x00". En suite lire octets par octets, jusqu'a trouver la suite de caractere correspondant à ta zone souhaitée ( 'm' 'a' 't' 'i' 's').
Ensuite lire le premier octets suivant pour obtenir le nom du drapeau
Ensuite lire octet par octets pour zapper les 3 0x00.
(1)Ensuite faire un readFloat (ou equivalent ds le langage que tu utilises) pour chopper les coordonnées en X
Faire un readFloat pour les coordonnée en Y
Ensuite un petit readChar pour obtenir la taille de la chaine de caractere à lire
Ensuite sauter les 2 0x00 en lisant 2 octets
Lire caractere par caractere la chaine du nom du drapeau, en sautant un caractere sur deux (les 0x00).
-- Passage au drapeau suivant :
lire 2 0x00 puis recommencer en (1)
Edit : hum apres relecture c'est peut etre pas tres clair, donc voici comment est découpé le fameux fichier :
- nom de la zone, caracteres codés sur 8bits (donc a lire caractere par caractere)
- nombre de drapeau, contenu dans un char (codé sur 8bits donc)
- 3 octets nuls
- un float contenant l'axe X du drapeau 1
- un float contenant l'axe Y du drapeau 1
- un char contenant le nombre de caractere du nom du drapeau 1
- 2 octets nuls
- le noms du drapeau 1 caractéres codés sur 16bits (donc lire un octet, zapper le suivant, lire un octet...)
- 3 octets nuls
- un float contenant l'axe X du drapeau 2
[...]