我正在尝试读取五个32位二进制数并将它们打印为int。这是我的代码:
FileInputStream fin = new FileInputStream(file);
int count = 5;
for (int i = 0; i < count; i++) {
byte[] input = file.getBytes();
String bin=Integer.toBinaryString(0xFF & input[i] | 0x100).substring(1);
System.out.println(bin);
我得到了这个:
01010011
01101110
00110011
01011111
01010010
我做错了什么?感谢
答案 0 :(得分:1)
您实际上并没有从文件中读取数据,而是打印文件名前五个字符的二进制表示形式。使用fin.read()从文件中读取字节。
您也可以使用DataInputStream直接读取32位大端整数,而不是将它们作为4个单独的字节读取。
答案 1 :(得分:0)
如果你需要读取五个 big-endian 32位整数,那么我建议你使用DataInputStream
,例如
final int count = 5;
try (DataInputStream dis = new DataInputStream(new FileInputStream(file))) {
for (int i = 0; i < count; i++) {
int value = dis.readInt();
System.out.println(Integer.toBinaryString(value));
}
}