手头一个程序是大端字节序的,高字节和低字节全部颠倒,需要转成小端序,用下面这个程序转了一下,希望对有同样需求的有帮助
PS:仅适用于全部是高字节和低字节颠倒的二进制文件,使用前请分析是否适合
#include <stdio.h>
#include <errno.h>
#define BUFSIZE 16
int main(int argc, char* argv[])
{
FILE *infp,*outfp;
int i,cnt;
char tmp;
char buf[BUFSIZE];
if(argc < 3)
perror("usage:command:input_file output_file/n");
if((infp = fopen(argv[1], "rb")) == NULL)
{
perror("open input error!/n");
}
if((outfp = fopen(argv[2], "wb+")) == NULL)
{
perror("open output error!/n");
}
while((cnt = fread(buf, 1, BUFSIZE, infp)) == BUFSIZE)
{
for(i=BUFSIZE - 1; i>0; i-=2)
{
tmp=buf[i];
buf[i]=buf[i-1];
buf[i-1]=tmp;
}
if(fwrite(buf, 1, BUFSIZE, outfp) < BUFSIZE)
perror("write error!/n");
}
if(cnt > 0)
{
if(cnt%2 == 0)
i=cnt-1;
else
i=cnt-2;
for(;i>0;i-=2)
{
tmp=buf[i];
buf[i]=buf[i-1];
buf[i-1]=tmp;
}
if(fwrite(buf, 1, cnt, outfp) < cnt)
perror("write error!/n");
}
printf("translation complete!/n");
fclose(infp);
fclose(outfp);
}