什么是 Berkeley DB 幻数?

What is the Berkeley DB Magic Number?

具有本机字节顺序的 Berkeley DB v9 Btree 的幻数是多少?幻数是否有特定长度或识别它们的简单方法?

如您所见,它是 0x00053162。我假设按本机字节顺序,你的意思是 x86 本机字节顺序?如果你对文件进行 hexdump,你会在字节 12-15 中看到它,字节交换(如 3162 0005,因为它是 x86):

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