java中怎样按照big endian输出 因为我输出的数据文件最终是被 VC++ 写的程序读取,而 VC++ 默认 big endian,所以我希望用java生成二进制数据文件的时候就按照 big endian,这样 VC++ 读取的时候就不用再将 little endian 转换成 big endian 。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得很奇怪,楼主为什么要这样写入文件。你把这个float当字符串写进文件不就行了嘛?C++那边当字符串读这样就没有编码问题了! 我用java生成的是一个媒体格式的文件,float只是文件中的某参数,最后该文件是由VC++写的播放器播放的。 说反了,java 是 big endian ,c++ 是 little endian 。 对,java本身是Big endian的c++才是little endian要转换成Little endian的话,可以这么来做 public void writeInt(int i)throws IOException{ byte[] b=new byte[4]; int maskB1 = 0xff; int maskB2 = 0xff00; int maskB3 = 0xff0000; int maskB4 = 0xff000000; b[3] =(byte)((i & maskB4)>>>24); b[2] =(byte)((i & maskB3)>>>16); b[1] =(byte)((i & maskB2)>>>8); b[0] =(byte)(i & maskB1); }这是一个int的转型 但是在jdk1.4种加入了java.nio.ByteOrder你可以查一下是不是有直接进行Big-endian和Little-endian间转换的方法 请教排序问题 (高分)跪求格式转换器核心思想和核心代码 内存分配问题:在创建一个类对象时分配哪些内存 java中,char变量未初始化的值是什么?一个int型变量呢?如何判断它们是否已经初始化了? 再问一个简单的java异常问题 关于类的问题 大家帮帮我,烦! 一个关于对象数组的错误 小弟请教................... 关于画图,大家来看看 一个ArrayList问题:对象中包含对象,包了两层,,最后一层是Integer,,,,,,,,, 请问怎么解决剩下的问题
你把这个float当字符串写进文件不就行了嘛?C++那边当字符串读
这样就没有编码问题了!
c++才是little endian
要转换成Little endian的话,可以这么来做
public void writeInt(int i)throws IOException{
byte[] b=new byte[4];
int maskB1 = 0xff;
int maskB2 = 0xff00;
int maskB3 = 0xff0000;
int maskB4 = 0xff000000;
b[3] =(byte)((i & maskB4)>>>24);
b[2] =(byte)((i & maskB3)>>>16);
b[1] =(byte)((i & maskB2)>>>8);
b[0] =(byte)(i & maskB1);
}这是一个int的转型
java.nio.ByteOrder
你可以查一下是不是有直接进行Big-endian和Little-endian间转换的方法