我正在尝试读取五个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但不起作用。任何帮助表示赞赏。
答案 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
。