通信を行う場合やファイルに格納するデータのバイトオーダーが決められている場合、バイトオーダーを変更する必要があります。
このような場合に必要となるバイトオーダーの変更方法に説明します。
バイトオーダーには、ビッグエンディアンとリトルエンディアンがあります。

以下、バイトオーダーの説明です。
 ・ビッグエンディアン
   … 最上位のバイトから順番に格納する。
 ・リトルエンディアン
   … 最下位のバイトから順番に格納する

格納する値を1とした場合、以下のように格納されます。
 ・ビッグエンディアン(00-00-00-01)
 ・リトルエンディアン(01-00-00-00)

バイトオーダーの変更には、以下の関数を利用します。
 1)リトルエンディアン→ビッグエンディアンへの変更
  ・u_long htonl(u_long hostlong);
  ・u_short htons(u_short hostshort);
 2)ビッグエンディアン→リトルエンディアンへの変更
  ・u_long ntohl(u_long netlong);
  ・u_short ntohs(u_short netshort);

以下、実装方法です。
今回は、htonl()を使ったサンプルを例に紹介します。

《事前準備》
1.コンソールアプリケーションを新規作成する。
 →空のプロジェクトを作成する。
2.ソースファイルを追加する。
 ・[プロジェクト]-[新規項目の追加]-[C++ファイル(.cpp)]を選択する。
3.リンカにソケット通信用のライブラリを追加する。
 1)[プロジェクト]-[xxxのプロパティ]を選択する。
  ※xxxには、プロジェクト名が入ります。
 2)画面左側のツリーから[構成プロパティ]-[リンカ]-[コマンドライン]を選択する。
 3)追加のオプションに以下を追加する。
ws2_32.lib

《コード》
#include <winsock2.h>
#include <stdio.h>
#include <memory.h>

int main (int argc, char* argv[]){
FILE *fp;
long idx;
long idx_bo;
char filename[] = "c:\\test.txt";

//ファイルを開く
fp= fopen(filename, "wb");
if(NULL == fp){
printf("File Open Error!");
exit(EXIT_FAILURE);
}

//値の書き込み
idx = 1;
idx_bo = htonl(idx);

//リトルエンディアンで出力
fwrite(&idx, sizeof(idx), 1, fp);
//ビッグエンディアンで出力
fwrite(&idx_bo, sizeof(idx_bo), 1, fp);

fclose(fp);

return 0;
}

実行して作成されたファイルをバイナリエディタで確認すると、「01 00 00 00 00 00 00 01」と出力されていると思います。
データとしては、前半4Byte、後半4Byteに分かれます。
最初の4Byteはリトルエンディアン、後半の4Byteはビッグエンディアンのデータになります。

【補足事項】
・Intel系のCPUを利用した場合、リトルエンディアンが使われている。
・ネットワークを利用する場合は、ビッグエンディアンが使われている。