研究MOBI要从研究PDB开始。
但我还是不知道MOBI跟PalmOS有什么关系
原文链接:https://wiki.mobileread.com/wiki/PDB#Palm_Database_File_Code
PalmOS将所有RAM存储保存为数据库格式。RAM中没有文件系统。当同步到PC上时,这些数据库将被保存在单独的文件中,这就是添加扩展名的地方。设备RAM中的所有文件都必须是Palm数据库格式,无论是程序还是数据。为外部存储创建的PDB文件是数据文件,其中可以包含任意内容。
表格显示有问题,看图吧
1bSXLD.png

偏移地址字节数内容注释
032数据库名数据库名,以0结尾。PalmOS上作为文件名。对于电子书一般为书名,长度够的话包含作者名
322属性bit field.(不重要,不翻了)
0x0002 Read-Only
0x0004 Dirty AppInfoArea
0x0008 Backup this database (i.e. no conduit exists)
0x0010 (16 decimal) Okay to install newer over existing copy, if present on PalmPilot
0x0020 (32 decimal) Force the PalmPilot to reset after this database is installed
0x0040 (64 decimal) Don't allow copy of file to be beamed to other Pilot.
342版本
364创建时间Unix时间戳
404修改时间
444最后备份时间
484修改编号?
524软件信息ID?软件信息的偏移地址(如果有)或者null
564分类ID?分类信息的偏移地址(如果有)或者null
604文件类型见该表
644创建者(软件)见该表
684唯一的ID种子?内部使用
724下一个记录表ID在 PalmOS 的内存中使用
762记录数该文件中有N条记录
788N列表,每条记录的信息
以下是每条记录的信息重复N次
4记录数据的偏移地址从文件头开始
1记录属性bit field. The least significant four bits are used to represent the category values. These are the categories used to split the databases for viewing on the screen. A few of the 16 categories are pre-defined but the user can add their own. There is an undefined category for use if the user or programmer hasn't set this.
0x10 (16 decimal) Secret record bit.
0x20 (32 decimal) Record in use (busy bit).
0x40 (64 decimal) Dirty record bit.
0x80 (128, unsigned decimal) Delete record on next HotSync.
3唯一ID一般从0开始数
记录的信息结束
2?分隔一般是两个全0字节
?记录记录的数据。。。。。