J'ai le tableau défini comme ci-dessous
INT32 LUT_OffsetValues[6][12] = {
0,180,360,540,720,900,1080,1260,1440,1620,1800,1980,
2160,2340,2520,2700,2880,3060,3240,3420,3600,3780,3960,4140,
4320,4500,4680,4860,5040,5220,5400,5580,5760,5940,6120,6300,
6480,6660,6840,7020,7200,7380,7560,7740,7920,8100,8280,8460,
8640,8820,9000,9180,9360,9540,9720,9900,10080,10260,10440,10620,
10800,10980,11160,11340,11520,11700,11880,12060,12240,12420,12600,12780
};
int main(int argc,char *argv[])
{
int var_row_index = 4 ;
int var_column_index = 5 ;
int computed_val = 0 ;
FILE *fp = NULL ;
fp = fopen("./LUT_Offset.bin","wb");
if(NULL != fp)
{
fwrite(LUT_OffsetValues,sizeof(INT32),72,fp);
fclose(fp);
}
printf("Size of Array:%d\n",sizeof(LUT_OffsetValues));
//computed_val = LUT_OffsetValues[var_row_index][var_column_index];
return 0;
}
Ci-dessus se trouve l'extrait de code avec lequel j'ai généré le fichier .bin. Est-ce la bonne façon de procéder?
3 Réponses :
Non, ce n'est pas la bonne façon si vous prévoyez de transférer le fichier sur une autre machine et de le lire car vous n'avez pas pris en compte le Endianness . Disons que le fichier est:
Cela ne fonctionnera dans aucun des cas ci-dessus.
Dans l'ordre des octets signalés par askinoor, cette voie n'est pas générique car le lecteur doit maintenant c'est un INT32 [6] [12] quand il le lit
Pourquoi les variables inutiles var_row_index etc dans votre programme?
Comme déjà mentionné, lors de la sérialisation des données dans et hors du CPU, il est préférable de forcer l'ordre des octets du réseau. Cela peut être fait facilement en utilisant des fonctions comme htonl () , qui devraient être disponibles sur la plupart des plates-formes (et compiler à rien sur les machines big endian).
Voici la documentation de Linux: https://linux.die.net/man/3/htonl p >
De plus, il n'est pas recommandé de coder explicitement les tailles et les types dans votre programme.
Utilisez sizeof (array [0] [0]) pour obtenir la taille du type d'élément de array , puis parcourez dessus et utilisez htonl () code> pour écrire chaque élément dans le fichier.