バイナリファイルに数値を書き込むプログラムを作成しました。スニペットは次のとおりです。
u_int16_t N=150;
u_int16_t seed=3;
FILE * outfile, *infile;
outfile=fopen("tempfile","wb");
//write these 2 16-bit numbers into binary file
fwrite(&seed, 2, 1, outfile);
fwrite(&N, 2, 1, outfile);
infile=fopen("tempfile","rb");
if(infile==NULL) fputs("Fire error\n",stderr);
//get the size of the file
fseek(infile,0,SEEK_END);
int lsize=ftell(infile);
rewind(infile);
u_char * temp2=(u_char*)malloc(lsize);
if(temp2==NULL) printf("temp2 error allocation\n");
fread(temp2,1,lsize,infile);
for(i=0;i<lsize;i++)
printf("%x",temp2[i]);
printf("\n");
fclose(infile);
free(temp2);
結果は次のとおりです。
30960
したがって、3は30
リトルエンディアンとして印刷され、150はとして印刷され960
、追加0
の、実際に0x96=150
は、ビッグエンディアンです。
3
エンディアンがとで異なるのは150
なぜですか。また、追加のエンディアンがあるのはなぜ0
ですか。ありがとう!