C/ C++写入二进制数据的的字节顺序是从低到高(左低到右高), 而java.io.DataoutputStream写入的数据是从高到低(左高到右低)。这样在两种文件进行互操作时,进必须要进行转换,交互字节顺序。下面以C读取java二进制文件为例,给出一种可行的转换方式。
#include <stdio.h>
int main() {
//本程序实现将用java写入的二进制文件用C读取出来
//Byte文件里有一个int型整数123456的java二进制形式
FILE *f;
char *filename="Byte";
f=fopen(filename,"rb");
int a;
fread(&a,sizeof(a),1,f);
int sz=sizeof(a);
char byte;
int realint=0;
for (int i=0;i<sz;i++)
{
byte=(char) (a>>i*8&0xff);
realint+=(byte&0xff)<<(sz-1-i)*8;
}
printf("%d\n",realint);
return 0;
}
结果输出为:123456;
说明:由于本人的博客无法上传文件,所以二进制文件“Byte”你可以自己找一个,相信不会难,如果你正准备把java文件读取出来。