Lecture d'un fichier binaire
Bonjour,
je cherche à lire un fichier binaire écrit je pense en C.
Je n'ai pas de problème pour le lire mais pour une partie j'ai un résultat qui n'est pas conforme aux données que j'attends.
Les données codées sont des identifiants de stations topographiques de la forme
1, 2, 3 ..... n
ou 1.1, 1.2, 1.3 ..., 2.1, 2.2, 2.3, ...., n.m
avec n et m entiers positifs.
Le concepteur du logiciel qui génère ces fichiers a fourni le commentaire suivant sur le codage du fichier :
// station identification
Int32 value // 0x80000000: undefined, <0: plain numbers + 0x80000001, >=0: major<<16|minor
All integers little endian.
J'ai écrit le code suivant pour récupérer ces valeurs :
Code:
1 2 3 4 5 6 7 8 9 10 11
| function LisId: string;
var w1,w2: word;
begin
LireBuffer(w1, sizeof(word));
LireBuffer(w2, sizeof(word));
if w2 > 32767 then w2 := 0;
if W2 > 0 then result := IntToStr(W2) + '.' + IntToStr(W1);
else result := IntToStr(W1);
end; |
Lorsque l'identifiant est formé d'un seul chiffre, j'obtiens la valeur n+1. Dans l'autre cas c'est correct.
Je le corrige en renvoyant dans ce cas n-1 mais j'aimerai comprendre si j'ai fait une erreur ou s'il y a une meilleure façon d'écrire ce code ?
Merci d'avance pour votre réponse