程式就是 資料結構 + 演算法。了解了程式的資料結構,那麼整個系統就明白一大半了。
下面關於**薄用到的比較重要的資料結構,看完應該對**薄 有個比較清晰的認識。
第乙個問題 mtk系統中怎麼儲存**薄的? (phonebook[max_pb_entries])
**薄中最 重要的結構mmi_phb_entry_bcd_struct phonebook[max_pb_entries];
其中phonebook是 儲存**本的陣列,大小為手機的容量 + sim1卡容量 + sim2卡容量
注意:phonebook中的陣列的內容並不是連續的。比如手機容 量為500,sim1為250,sim2為150,則,陣列內容分配如下:手機phonebook [0:499]+ sim1[500:749] + sim2[750:899]
sim1的資料是從501(非陣列序號)個開始是sim1的**薄內容,順序是sim1的物理順序(非拼音順序)。同 理,sim2的資料是從751(非陣列序號)個開始的。
如果sim1沒有滿,則,501—751之間的內容後面會是有空的。
對此結構的描 述:主要儲存**本的資料
typedef struct
mmi_phb_entry_bcd_struct;
typedef struct
mmi_phb_number_bcd_struct;
typedef struct
mmi_phb_name_struct;
說明幾點:一下沒有說明的都是gsm的sim格式
1. name[xx]儲存**本中的名字。**薄中儲存的名字有兩種方式,一種是ucs2,一種是ascii。其中ucs2每個字元占用2個byte,可以表 示漢字等。ascii占用1byte,只可以表示英文本元(256範圍)。。name_length是儲存**薄本名字的長度,為字元的個數,注意不是字 節數(因為ucs2是乙個字元=2byte)。
name_dcs,說明儲存的名字是什麼格式的。對應有ucs2,ascii 有兩種mmi_phb_ascii = 0x04,
mmi_phb_ucs2 = 0x08
2. number 是儲存**本中的號碼。其格式是用bcd來儲存的,其優點是1byte可以儲存2個數字。不包含 + 號的。
length, 是nubmer陣列的內容長度的
type,這個很重要。對於兩種格式。其 中,mmi_csmcc_international_addr(145),mmi_csmcc_default_addr_type(129),145 代表真正的number實際上是[+] [number的內容],(此時length,還是number的長度,不包含+號的長度)。
比如**本 中有個號碼+123456,則對於的儲存是
number = 轉換到bcd格式(123456);
length = 6;
type = 145;
如果號碼是123456,則此時儲存如下
number = 轉換到bcd格式(123456);
length = 6;
type = 129;
由於這種格式我們使用不是很方便,所以涉及到的可能用到的函式如下:
u8 mmi_phb_convert_to_bcd(u8 *dest, u8 *source, u8 max_dest_len);
u8 mmi_phb_convert_to_digit(u8 *dest, u8 *source, u8 max_dest_len);
轉換 bcd的號碼格式到ascii字元。
由於系統要用ucs2顯示,而處理由於節省空間,系統中,英文本元都不是ucs2格式的,所以任何顯示要保證 是ucs2格式的,這時要用到如下函式
u16 ansiitounicodestring(s8 *poutbuffer, s8 *pinbuffer);
注意大小關係 strlen(poutbuffer) > 2×strlen(pinbuffer)
encodingdecoding(mmi_chset_pair_enum scheme, char *poutbuffer, char *pinbuffer, kal_int32 dest_size).
字元轉 換的乙個函式。可以gb2312
poj之路2 487 3279電話薄求重複
自己的思路實現的,少量資料時可以正常執行,因為使用了string陣列,不能達到100000的資料量。這個演算法是第一次使用string類的一些函式,留著供以後參考。如下 include include include using namespace std char get num char a i...
HTTP RFC中所用到的規則
2.標誌轉換及通用語法 notational conventions and generic grammar 2.1 補充反饋方式 augmented bnf 與rfc822 7 很類似,本文對所有機制的說明都是以散文和補充反饋的方式來描述的。對於實現者來說,要想理解這些約定,必須對這些符號很熟悉。...
QT4版mini電話薄設計
基於ubuntu woojoy的qt4版mini 薄設計 前言 linux作業系統 本設計中的 ubuntu woojoy 執行在虛擬機器 下開發環境。應用程式 框架。它提供 給應用程式開發者建立藝術級的圖形使用者介面所需的所用功能。qt是完全 物件導向 的,很容易擴充套件,並且允許真正地元件程式設...