unix下c程序向win下移植的一个小问题

大家要注意unix下的字节排序问题,unix下一般使用big-endian排序,即大的在前,小
的在后;而win下小的在前,大的在后。所以在移植的时候,并不是直接从数据文件的
一个int就一定是对的,如果需要转换,就一定要转换。
早上小M的一个任务有同样的问题,解决方案当然很多,比如设置:
unsigned int dn1, dn2;
unsigned int DN;

dn1=getc(in); //in是输入流
dn2=getc(in);
DN=dn1*256+dn2; //DN是正确的int值;

或利用指针:
unsigned int DN=0;
char * p=reinterpret_cast<char*>(&DN);

fread(p+1,sizeof(char),1,in);
fread(p, sizeof(char),1, in);
//DN里存放正确的int值

Leave a Reply

Your email address will not be published.