在java中读取32位二进制数

时间:2014-04-17 20:42:53

标签: java

我正在尝试读取五个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

我做错了什么?感谢

2 个答案:

答案 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));
    }
}
相关问题