Java读取二进制文件,二进制文件是由C++写生成的

问题描述

有一个应用,需要解析一个C++生成的文件,我用BufferedRandomAccessFile读取。 问题:1、文件中原8字节是C++的double存储的,二进制高地位相反,且我了解的是1位符号位,11位移码,52位尾数,请问有无好的方法在Java中得到该8字节的正确数据; 2、里面有4字节的int型的数据,由于C++写入文件是高位在后,低位在前(与java相反), 我是通过位移运算解决了; 问题补充:呵呵,自己解决了,您给的也试了下,没有出预想的结果,呵呵,依然感谢,给分! ByteUtil.reverseBytes(byteArr); //这里倒置二进制数组,因为Java是高位在前的 ByteBuffer bf=ByteBuffer.wrap(byteArr); bf.getDouble(); //呵呵测试成功 chen_yongkai 写道

解决方案

public static long getLong(byte[] b, int off) {return (((long) b[off] << 56) + ((long) (b[off + 1] & 255) << 48)+ ((long) (b[off + 2] & 255) << 40) + ((long) (b[off + 3] & 255) << 32)+ ((long) (b[off + 4] & 255) << 24) + ((b[off + 5] & 255) << 16)+ ((b[off + 6] & 255) << 8) + ((b[off + 7] & 255) << 0));}public static double getDouble(byte[] b) {return Double.longBitsToDouble(getLong(b, 0));}
解决方案二:
试试 用InputStrean或者DataInputStream , readInt(), readFloat();http://jwinblad.com/resources/unsignedtojava.html
解决方案三:
你的思路是对,实现起来也不难啊

时间: 2024-09-08 09:36:07

Java读取二进制文件,二进制文件是由C++写生成的的相关文章

java读取gif图片后,重新写一个gif图片,此图片没有动画效果

问题描述 我用java读取一个gif图片,把它再重新写一个gif图片,但是新写出来的图片就没有动画了,为什么??急用 大家帮帮忙我刚开始是这样写的,运行生成的gif图片不能看List < BufferedImage > images = new ArrayList<BufferedImage>(); try{ File file=new File("e:\awkoe.gif"); java.util.Iterator<ImageReader> ima

java读取c语言的二进制文件

问题描述 java读取c语言的二进制文件 二进制文件内容有多种无符号基础数据类型存储的.但是用java读取出来的有问题.网上说的无符号转换也试过了,也没用,希望高手能写个例子我看看. 解决方案 建议使用字节流不要用字符流http://guozhenqian.iteye.com/blog/1123768

java读取二进制文件

问题描述 有一个文件,前半部分是控制头部分,以ASCII格式存储,后半部分是数据部分以二进制存储要怎通过java读取该文件?把数据部分提取出来? 问题补充:File inFile = new File("C://11.txt"); byte[] inOutb = getBytesFromFile(inFile); String b = new String(inOutb);我先把整个文件按二进制读取了,然后该怎么取其中的一部分把他变成String?还有,我保存到byte里面,通过byt

写文件-Java读取文件然后再修改回去

问题描述 Java读取文件然后再修改回去 有一个文件存着很多对象,现在读取其中的一个对象,然后 将其修改,最终再将这个对象再保存回原文件.这个怎么实现.C语言由于可以控制读文件指针,所以可以定位指正到指定的位置,可是Java怎么修改文件指针? 解决方案 可以试试RandomAccessFile类. 解决方案二: 在Java下使用DOM来读取/修改Xml文件java 修改 读取properties文件 解决方案三: 可以试试RandomAccessFile类. 解决方案四: 可以试试RandomA

java读取服务器html文件带图片显示到前端

问题描述 java读取服务器html文件带图片显示到前端 html文件是通过word另存为生成的,存放位置不在web项目路径下,我现在通过文件流的方式读取html文件显示到浏览器,但图片无法显示出来,怎样解决呢? 解决方案 因为HTML文件也是文本文件,所以使用简单的字符流读取就可以了,而图片是二进制文件,需要字节流读取,可以使用ImageIO类(详细用法参照API文档)读取并写出图片,然后使用HTML的标签显示即可.当然这仅仅是解决思路之一.

[转Java读取文件]各种流

[Java]读取文件方法大全 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内容  4.随机读取文件内容 public class ReadFromFile {     /**      * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件.      */     public static void readFileByBytes(String fileName) {         File file = new File(fileName);     

java读取文件和写入文件的方式(简单实例)_java

Java代码 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.out.println("以字节为单位读取文件内容,一次读一个字节:"); // 一次读

Java读取文件内容的小例子

Java 提供 BufferedReader 类用来从流中读取字符串.FileReader 类用来读取文件.我们用这两个类来读取文件中的字符串. 下面是一个例子: import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class ReadFile{ public static void main(String[] args){ String path="c:/1.txt&

java读取操作系统环境变量

变量 java读取操作系统环境变量 /**文件名:SysProb.java描述: 取得当前系统变量的程序. java中的System.getProperty只是针对JVM来的,如果要取得系统环境变量,还要用到系统相关的函数作者: 慈勤强Email :cqq1978@Gmail.com**/ import java.util.*;import java.io.*; class SysProb{ //返回当前系统变量的函数,结果放在一个Properties里边,这里只针对win2k以上的,其它系统可

java读取本地的html文件并且将其样式原样的显示在浏览器中

问题描述 java读取本地的html文件并且将其样式原样的显示在浏览器中 2C java读取本地html文件并且将其样式原样的显示在浏览器中,且不能将其路径显示在地址栏中!求大神解答!就这些币了,全给了! 解决方案 用servlet是没错的,在方法体里面可以写成IO流 然后给上HTML文件的 path路径,然后用流读取文件全部内容输出到想要跳转的页面:如果你知道节点那个东西怎么获取的话,可以直接得到body的内容 解决方案二: 类似这样 public class ServletClass ext