MTK電話薄中所用到的資料結構及其在電話薄中的作用

2021-05-22 15:21:28 字數 2046 閱讀 6917

程式就是 資料結構 + 演算法。了解了程式的資料結構,那麼整個系統就明白一大半了。

下面關於**薄用到的比較重要的資料結構,看完應該對**薄 有個比較清晰的認識。

第乙個問題 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是完全 物件導向 的,很容易擴充套件,並且允許真正地元件程式設...