我正在研究字节序。我的小端程序有效,并给出了正确的输出。但我无法绕过大端。以下是我到目前为止所拥有的。我知道我必须使用位移,但我认为我做得不好。我试着问我的助教和教授,但他们没有多大帮助。我一直在关注这个链接(在 C 中将 big endian 转换为 little endian [不使用提供的 func])以了解更多信息,但仍然无法使其工作。感谢您的帮助。
#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 value,value2;
int i;
int zipcode, population;
while(fscanf(input,"%d %d\n",&zipcode, &population)!= EOF)
{
for(i = 0; i<4; i++)
{
population = ((population >> 4)|(population << 4));
}
fwrite(&population, sizeof(int), 1, output);
}
fclose(input);
fclose(output);
return 0;
}