2015-08-17 54 views
2

具有本機字節順序的Berkeley DB v9 Btree的神奇數字是什麼?魔術數字有沒有特定的長度,或者有什麼簡單的方法來識別它們?什麼是伯克利DB魔術數字?

+1

是什麼讓你覺得有*是*一個「魔術數字「?你是否知道數據文件的二進制格式足以知道有這樣一個數字,但不知道實際的數字?如果你知道二進制文件,那麼你應該知道數字在哪裏,因此可以自己找到它。你不能只是下載源代碼,看看?它*是雙重許可的,一個許可證是一個開源許可證,或者你不想創建一個Oracle帳戶?如何看待Oracle之前的舊版本? –

+1

我知道它有一個,因爲* nix文件命令。這就是它如何識別文件,以及爲什麼想要它,我需要它在一個嚴重搞砸的文件系統的磁盤上刻錄文件。 – Scoopta

+0

Berkeley DB Btree幻數中的Linux'file'命令的源代碼中似乎有一個條目。從Ubuntu/Debian的'apt-get源文件'獲得'file'源代碼,然後查看'./file-5.14/magic/Magdir/database'。我不太在乎將這個文本輸入文件的格式解碼爲'file',但也許你會這樣做。 – Paul

回答

1

正如你發現它是0x00053162。我假設的本地字節順序,你的意思是x86本地字節順序?如果你進制打印文件,你會看到它以字節爲單位12-15,byteswapped(如3162 0005,因爲它是86):

hexdump blah.db | head -1 
0000000 0001 0000 9fbc 0009 0000 0000 3162 0005 
0000010 0009 0000 1000 0000 0900 0001 0000 0000 

的版本是在未來uint32_t,16-19字節。在這裏,它是0009 0000,這是第9版的小端字幕。事實上,起始於字節是整個序列偏移12個看起來是一個struct __db_bt_stat,其內容在手冊頁給出了db_stat(或Db::stat)可以在這裏找到:http://www.mit.edu/afs.new/athena/astaff/source/src-9.0/third/db/docs/api_cxx/Db/stat.html

+0

是的我的意思是x86本地字節順序。 – Scoopta

+0

非常感謝。我沒有意識到x86是字節切換的。這現在非常有意義。 – Scoopta