2015-12-20 29 views
3

我想了解一些基本知識,我試圖用Java讀取二進制文件,在這種情況下這是無關緊要的,但可能有助於這種方法,我認爲。所以,我知道該文件的前四個字節的值爲0x9AA2D903。但是,當我讀到它時,它們的順序如下所示:03 D9 A2 9A(03 - 第一個字節,D9 - 第二個,依此類推)。比較給定的值與文件的第一個字節

我需要做什麼來比較0x9AA2D903的值和我得到的輸出?首先,想到的是獲取這4個字節的數組,然後將它們翻轉並轉換爲字符串。但它看起來很可怕。

如果你可以指出一些文獻,那就太好了。

代碼:

Path path = Paths.get(Utils.getResourseURI("Demo.kdbx")); 

try { 
    FileInputStream fin = new FileInputStream(path.toString()); 
      } 
    int len; 
    byte bytes[] = new byte[16]; 

    do { 
     len = fin.read(bytes); 
     for (int j = 0; j < len; j++) 
      System.out.printf("%02d\n", bytes[j]); 

    } while (len != -1); 
} 

回答

3

我不能發表評論,但你應該採取看看this SO post

它看起來像你的文件是一個不同的Endian比你正在閱讀。例如。在閱讀Big Endian時,文件可能是Little Endian。因此,不是試圖比較值然後顛倒順序,而是以所需的Endian讀取它。

相關問題