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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sgly

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

#1

投稿記事 by sgly » 14年前

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 でないのはなぜでしょうか? 他も同じです。

Fimbul
記事: 100
登録日時: 14年前

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

#2

投稿記事 by Fimbul » 14年前

http://dixq.net/g/03_11.html
こちらのページの後ろに載っています。
リトルエンディアンというデータの並びだそうです。

sgly

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

#3

投稿記事 by sgly » 14年前

なるほど。int型で保存したものをchar型で読み込むときに苦労しました。ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る