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 :
Lorsque l'identifiant est formé d'un seul chiffre, j'obtiens la valeur n+1. Dans l'autre cas c'est correct.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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
Partager