0

バイトを逆にしてリトル エンディアンをビッグ エンディアンに変換しようとしていますが、リトル エンディアンと同じ出力が得られます。コードを大幅に変更しましたが、値は同じままです。誰かが私が間違っている場所を教えてくれたら。お手伝いありがとう

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
        FILE* input;
        FILE* output;

        input = fopen(argv[1],"r");
        output = fopen(argv[2],"w");

        int zipcode, population, value;
        int popluationEndian;

        unsigned char *convert =  (unsigned char*) &population;
        unsigned char temp[4];

        int i;
        while(fscanf(input,"%d %d\n",&zipcode, &population)!= EOF)
        {
                for(i = 0; i<4; i++)
                {
                        temp[i] = convert[3-i];
                }
               popluationEndian = fwrite(&population,sizeof(int),1,output);
        }

        fclose(input);                
        fclose(output);
        return 0;
}
4

1 に答える 1

1

ここでバイトオーダーを変更します

temp[i] = convert[3-i];

しかし、二度と使用tempしないでください。

tempにあるものではなく、入っているものを出力したいでしょうpopulation

于 2013-03-29T21:53:09.950 に答える