在java中读取32位二进制数

时间:2014-04-24 00:59:12

标签: java file-io

我正在尝试读取五个32位二进制数。我正在阅读1,5,8和45,但我无法阅读134,217,728。我的代码如下:

FileInputStream file = new FileInputStream("C:/Sn3.edf");
BufferedInputStream buff = new BufferedInputStream(file)) {
    int in;
    for (int i=0;i<count;i++) {
        in = buff.read();
        System.out.println("       " + in);
    } 

我尝试将int更改为long但不起作用。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

你没有发布一个完整的代码示例,但你没有发布输入文件的内容,但无论如何都要发布。

http://docs.oracle.com/javase/7/docs/api/java/io/BufferedInputStream.html#read()

根据JDK文档,BufferedInputStream.read()一次返回一个字节。您一次读取一个字节,将其存储在in中,然后将其打印到控制台。如果您的每个数字都是8位,那么该代码只适用于您。由于存储在文件中的32位整数,您需要一次读取4个字节(32位/ 8位/字节),然后进行一些数学运算以将这些字节转换为Java int