私は宿題をしていて、長い値を取り、そのバイトを逆順に返す関数をCで書く必要があります.関数のプロトタイプが与えられています.
long swapLong(long x)
私のコードは次のようになります:
long swapLong(long in)
{
long out;
char *inp = (char *) &in ;
char *outp = (char *) &out;
int i=0;
for (i=0; i<8 ;i++)
{
outp[i] = inp[7-i];
}
return out;
}
関数の入力が 0x1122334455667788 の場合
0x8877665544332211 を返す必要があります
しかし、私がそれをテストするとき
long test2 = 0x1122334455667788;
long result2= swapLong(test2);
printf("0x %lx\n", test2);
printf("0x %lx\n", result2);
結果は 0x44332211 です
関数は入力の前半のみを交換するようで、後半に何が起こるかわかりません
私は「 int swapInt( int x) 」と呼ばれる別の関数を書いており、swapLong() と同様のアイデアを使用しており、うまく機能します....だから、swapLong() で何が間違っていたのかわかりません