ページ 11

int型数値をバイナリファイルで保存したときに、"1" = 01 00 00 00となる理由は...?

Posted: 2011年12月29日(木) 00:52
by sgly
vbc++です。int型整数を配列に入れてfwriteでバイナリファイルとして保存しました。
以下はテストプログラムです。

コード:

int main(){

	FILE *fp;
	unsigned int in[16];

	fp=fopen("a.raw", "wb");

	for(int i=0; i<16;i++){
			in[i]=i;
			printf("%d", in[i]);
	}
		fwrite(in, sizeof(int), 16, fp);
	
	fclose(fp);

	return 0;
}
そのファイル(a.raw)をバイナリエディタで見てみると、下のようになったのですが、

00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00

04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00

08 00 00 00 09 00 00 00 0A 00 00 00 0B 00 00 00

0C 00 00 00 0D 00 00 00 0E 00 00 00 0F 00 00 00

4バイト区切りで見たとき、in[1] = 1 のときに 01 00 00 00 と書かれてあるのですが、これは 00 00 00 01 でないのはなぜでしょうか? 他も同じです。

Re: int型数値をバイナリファイルで保存したときに、"1" = 01 00 00 00となる理由は...?

Posted: 2011年12月29日(木) 01:55
by Fimbul
http://dixq.net/g/03_11.html
こちらのページの後ろに載っています。
リトルエンディアンというデータの並びだそうです。

Re: int型数値をバイナリファイルで保存したときに、"1" = 01 00 00 00となる理由は...?

Posted: 2011年12月29日(木) 10:31
by sgly
なるほど。int型で保存したものをchar型で読み込むときに苦労しました。ありがとうございました。