【备忘】java读取c++ fwrite写的文件
2012-06-19 10:01
253 查看
原文链接:http://www.iteye.com/problems/42079
灰常感谢回答问题的大神啊!!!
C++ 用fwrite写入文件的字节顺序是从低到高(左低到右高)也就是 是little-endian方式,
而在用java读取文件的时候会用到java.io.DataInputStream读取,它的数据格式是从高到低(左高到右低) 也就是big-endian方式。所以需要更改写入顺序。
有以下两种方法:
1.
可以使用commons-io中的类SwappedDataInputStream
commons-io包可以到apache上下载 http://commons.apache.org/io/download_io.cgi
2. 另外可以使用ByteBuffer来完成,而不需要自己考虑,如何将字节数组转换为其他数据类型.
使用ByteBuffer,可以设置字节顺序.
ByteBuffer简单的例子
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
public class ByteBufferTest {
public static void main(String[] args) {
//将字节数组转换为int类型
byte[] bytes = {0,0,0,1};
ByteBuffer buffer = ByteBuffer.wrap(bytes);
System.out.println(buffer.getInt());
ByteBuffer buffer2 = ByteBuffer.wrap(bytes);
buffer2.order(ByteOrder.LITTLE_ENDIAN);
System.out.println(buffer2.getInt());
}
}
灰常感谢回答问题的大神啊!!!
C++ 用fwrite写入文件的字节顺序是从低到高(左低到右高)也就是 是little-endian方式,
而在用java读取文件的时候会用到java.io.DataInputStream读取,它的数据格式是从高到低(左高到右低) 也就是big-endian方式。所以需要更改写入顺序。
有以下两种方法:
1.
可以使用commons-io中的类SwappedDataInputStream
commons-io包可以到apache上下载 http://commons.apache.org/io/download_io.cgi
2. 另外可以使用ByteBuffer来完成,而不需要自己考虑,如何将字节数组转换为其他数据类型.
使用ByteBuffer,可以设置字节顺序.
ByteBuffer简单的例子
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
public class ByteBufferTest {
public static void main(String[] args) {
//将字节数组转换为int类型
byte[] bytes = {0,0,0,1};
ByteBuffer buffer = ByteBuffer.wrap(bytes);
System.out.println(buffer.getInt());
ByteBuffer buffer2 = ByteBuffer.wrap(bytes);
buffer2.order(ByteOrder.LITTLE_ENDIAN);
System.out.println(buffer2.getInt());
}
}
相关文章推荐
- 在Java中如何读取用MATLAB的fwrite()函数写入文件的数据
- java 读取 properties 配置文件 备忘
- Log(C/C++和Java)->写到Log设备文件 LogCat->读取Log设备文件(LogCat默认输出控制台)
- java程序读取properties配置文件的两种方式,备忘
- java 读取 properties 配置文件 备忘
- java读取C++里的文件,C++的long用java怎么读取。负数的转变
- C/c++与java之间的二进制文件相互读取
- 【java基础:JDBC】通过读取配置文件进行数据库连接并读取数据的Demostration
- //使用字符流的方式进行文件HelloWorld.java的读取并打印至控制台
- java 使用dom4j.jar读取xml文件
- 使用JAVA读取EXCEL文件里面的数据
- Java高效读取大文件
- 读取Java文件到byte数组的三种方式
- Java基本的文件读取,和复制,初学者
- 读取java配置文件
- java操作文件(压缩文件,导出zip,删除zip,写入文件,读取文件)
- Java将对象保存到文件中/从文件中读取对象
- java读取配置文件方法
- java.lang.IllegalArgumentException:(读取配置文件异常)
- Java中spring读取配置文件的几种方法