C/c++与java之间的二进制文件相互读取

来源:互联网 发布:卖家申请淘宝直播条件 编辑:程序博客网 时间:2024/06/06 16:41

      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文件读取出来。

原创粉丝点击