二进制文件读取不正确

时间:2019-10-02 16:07:34

标签: java

我正在尝试将二进制文件转换为以10为基数,但是当我将内容从二进制文件传输到arraylist时,我得到的是48(而不是0)和49(而不是1)。

import java.io.*;
import java.util.ArrayList;

public class BaseToDecimal {
public static void main(String[] args) throws IOException, 
FileNotFoundException{

  //Reads in a binary file
  FileInputStream binFile = new FileInputStream("file1.bin"); 
  BufferedInputStream bufferedFile = new BufferedInputStream(binFile, 1000);

  //Puts each element from the file into an arraylist
  ArrayList<Integer> binaryList = new ArrayList<Integer>();
  int current = bufferedFile.read();
  while(current != -1){
     binaryList.add(current);
     current = bufferedFile.read();
  }

  //Converts binary from arraylist to base 10
  int result = 0;
  for(int i = 0; i <= binaryList.size() - 1; i++){
     result = (result * 2) + binaryList.get(i);
  }

  //prints out original binary number, number of bytes, and base 10 conversion
  System.out.print("File content: ");
  for(int i = 0; i <= binaryList.size() - 1; i++){
     System.out.print(binaryList.get(i));
  }
  System.out.println("");
  System.out.println("Total number of bytes read: " + (binaryList.size())+ " bytes");
  System.out.println("The equivalent number in base 10 format is " + result);
 }
}

二进制文件只是1011101011111011,但是当读入数组列表时,我得到49484949494849849484949494949484949

1 个答案:

答案 0 :(得分:0)

您的文件正在作为文本数据(ASCII)读取,并且正在传递字符代码的整数值。您将要根据提供的值创建一个字符,然后将其解析为字符串以检索每个字符代表的值。

相关问题