機子及作業系統越來越多,我不可能逐一撰寫閱讀軟體,因而特將uPDB及PDB檔詳細規格公布如下,方便有興趣、有時間、能寫程式的讀友,為新機種撰寫閱讀軟體。
- PDB是源自Palm作業系統的一個單一檔案,簡易資料庫。
- 每一個PDB檔含N筆不定長度的資料(record)。
- PDB檔最前面當然要有個Header,定義本資料庫的特性。
- 因資料長度非固定,無法計算位置。所以Header之後,是各筆資料所在的位置,可以用來讀資料及計算每筆資料的長度。
- 之後,就是一筆一筆的資料,沒什麼大學問可言。
- 檔案的前78個bytes,是Header[0..77]:
- Header[0..34]舊版是放書名,新版是放作者。可以不理。
- Header[35]是2,舊版是1。可以不理。
- Header[36..43]是為Palm而加的兩個日期,可以不理。
- Header[44..59]都是0。可以不理。
- Header[60..63]是”BOOK”。可以不理。
- Header[64..67]是判別的關鍵,PDB是”MTIT”,uPDB是”MTIU”。
- Header[68..75]都是0。可以不理。
- Header[76..77]是record數 = N (章數) 加2 (目錄及書籤)。
- 每筆資料的起始位置及屬性,依Palm的規格是8個bytes,前4個bytes是位置,後4個bytes是0。一共有 (N+2) * 8 bytes。
- 第一筆資料定義書的屬性,是8個空白字元、書名、章數及目錄:
- (PDB檔)
8個空白btyes,可以不理;
之後接書名是Big5碼,後接三個ESC(即27);
之後接章數(ASCII string),後接一個ESC;
之後接目錄,各章之標題是以ESC分隔。 - (uPDB檔)
8個空白btyes,可以不理;
之後接書名是Unicode碼,後接三個ESC(即27,0);
之後接章數(ASCII string),後接一個ESC (27, 0);
之後接目錄,各章之標題是以CR(13,0) NL(10,0) 分隔。
- (PDB檔)
- 再來是N筆資料,每筆是一章的內容,PDB檔是Big5碼(是null-terminated string,最後一個byte是0),uPDB檔是Unicode碼。
- 第N+2筆資料是書籤,預設是-1。可以不理。