Bonjour,
Je cherche à adapter du code C en Java.
L'une des fonctions me pose problème.
Il s'agit de lire dans un fichier des longs qui ont été écrits puis lus dans le fichier avec les fonctions suivantes du langage C :
où l'on lit / écrit l'équivalent d'un long (4 octets x 1) avec les paramètres suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
- donnee est un long où l'on lit ou écrit
- 4 correspond au nombre d'octets à lire ou écrire pour chaque élément
- 1 correspond au nombre d'éléments à lire ou écrire
- fich est le fichier où l'on lit ou écrit
Donc, j'ai tenté de transposer cela en Java de la manière suivante afin de lire le fichier écrit précédemment :
Sachant que TabNum est un tableau de long, la première astuce consiste à comprendre (je crois, corrigez si erreur !) qu'un long en C est de taille 4 octets alors qu'en Java il est de taille 8 octets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
Cela explique dans mon code le readInt casté en long puis rangé dans un tableau de longs.
Résultat au final :
Ca donne des nombres super longs, voire négatifs. Bref, rien à voir avec les données lues et écrites à l'origine en C.
J'ai essayé avec readLong (qui lit 8 octets donc) et logiquement ça ne lit pas correctement non plus.
Est-ce que vous avez des idées ?

 

 
		
		 
         
 

 
			
			

 
   


 Equivalent fread (langage C) en Java
 Equivalent fread (langage C) en Java
				 Répondre avec citation
  Répondre avec citation
Partager