關於kindle mobi詞典解析

2021-09-09 05:48:03 字數 602 閱讀 8978

純文本版

1.關於mobi正文分塊

mobi正文分了若干塊正文塊的資訊在文章開頭偏移78個位元組的位置

2.關於mobi標頭檔案

字段位置都要加上 正文分塊資訊的偏移

詳情見:

我們現在只關注需要的資訊:判斷mobi是否為一本詞典的標誌為字段96和100,判斷是否有索引為60 metaorthindex

和643.關於詞典索引

詞典有多個個索引區,metaorthindex為索引區的開始位置,每個區解壓後最多為65536個位元組,索引區有 idex判斷該區是否是索引區,第乙個索引區一般比較小,包含的資訊有索引塊的總個數,索引可能用到的公共字元count索引的個數,hordt1公共字元塊,每個索引都佔8個位元組前四個位元組索引內容所在的位置startpos,後四位元組索引在正文所在的位置endpos。索引內容是連續的並且為有序的,排序方式為去掉標點符號和數字後並且大寫轉小寫後得到的usc-2對應的順序

4.關於查詞

由於詞典索引是有序的,查詞的為二分查詢效率最佳,先查每個區的頭乙個索引確定是哪個區,再在區內進行查詢;查詢正文是由於每個塊在解壓後固定長度或者是記錄好的長度,這樣先確定是哪個塊資料再解壓得到索引的正文。

c++解析**版:

關於詞典查詢的一點思路

詞典查詢方法 首先,編寫加入詞庫工具,讀檔案,每行對應單詞為中文單詞和英文單詞,錄入時這樣 id 0 a 中文單詞,同時,寫另乙個索引檔案2 英文單詞首位址,中文單詞首位址。當輸入乙個字母時,開啟另乙個執行緒去查詢,把這個單詞,根據id二分之後 即 currentid 0 max 2 而這個curr...

關於解耦的思考

前言 以前記得在知乎上看過,乙個神奇的例子,大致上來說就是乙個手機接觸到了金屬湯匙,結果手機顯示檢測的未知裝置。其實從一方面看來這也算是乙個 復用的思想吧。在設計程式的時候,我們都會盡力提高 的復用性,這也導致在方法中會產生依賴的關係,但是對於使用者而言,依賴關係會新增諸多的限制,因此在設計程式的時...

關於XUtils框架細解

感謝關注xuitls的最近一段時間給予的熱心反饋,xutils近期做了很多細節優化之後,功能和api已經穩定。1.9.6主要更新內容 bitmap載入動畫有時重複出現的問題修復,載入過程優化 http模組requestcallback等優化。詳細更新記錄見 commits master xutils...