Tu est victime des indiens, les petits et les grands.
(joke) en fais le stockage d'un 32bits ou plus en taille peut se faire de deux facons, little-indian et big-endian qui sont la contraction de little-in-the-end et bigger-in-the-end.
Sur un machine intel (comme ton PC) les deux/quatres octets qui definisse un int (taille a voir en fortran) sont big-endian. Je suppose que la machine linux de ton correspondant travaille en little-indian(mac?).
Exemple soit la valeur 2335 en decimal qui se traduit en hexa :091F
dans ton fichier si tu lis octet par octet tu va lire
09 puis 1F (si le fichier est big indian)
si tu lis int par int tu va lire
1F09 a cause le l'inversion
en plus simple, lis ton fichier octet par octet, determine la taille d'un int du systeme (2 ou 4 octet) et tu fais
monint= octet[0]*256+octet[1]
ou
monint= octet[1]*256+octet[0]
pour passer d'un systeme a l'autre
dans ton cas, tu dois lire 1F puis 09
a transforme par
monint= octet[1]*256+octet[0]
pour obtenir 091F
# Motorola-Intel
Posté par TheBreton . En réponse au message lecture fichier binaire en fortran et inversion d'octets. Évalué à 4.
(joke) en fais le stockage d'un 32bits ou plus en taille peut se faire de deux facons, little-indian et big-endian qui sont la contraction de little-in-the-end et bigger-in-the-end.
Sur un machine intel (comme ton PC) les deux/quatres octets qui definisse un int (taille a voir en fortran) sont big-endian. Je suppose que la machine linux de ton correspondant travaille en little-indian(mac?).
Exemple soit la valeur 2335 en decimal qui se traduit en hexa :091F
dans ton fichier si tu lis octet par octet tu va lire
09 puis 1F (si le fichier est big indian)
si tu lis int par int tu va lire
1F09 a cause le l'inversion
en plus simple, lis ton fichier octet par octet, determine la taille d'un int du systeme (2 ou 4 octet) et tu fais
monint= octet[0]*256+octet[1]
ou
monint= octet[1]*256+octet[0]
pour passer d'un systeme a l'autre
dans ton cas, tu dois lire 1F puis 09
a transforme par
monint= octet[1]*256+octet[0]
pour obtenir 091F