我正在尝试将二进制文件转换为以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
答案 0 :(得分:0)
您的文件正在作为文本数据(ASCII)读取,并且正在传递字符代码的整数值。您将要根据提供的值创建一个字符,然后将其解析为字符串以检索每个字符代表的值。