一种手机通讯录号码查询信息处理方法

文档序号:7768216阅读:304来源:国知局
专利名称:一种手机通讯录号码查询信息处理方法
技术领域
本发明涉及一种通讯录号码查询方法,尤其是涉及一种手机通讯录号码查询信息处理方法。
背景技术
随着3G网络和智能手机的普及,手机邮箱和VOIP (Voice over Internet Protocol,通过网络传输语音)语音功能的使用将会越来越普及,在通讯录记录中除了常用的手机号码和固定电话号码外,添加电子邮件地址和VOIP语音电话号码也将成为一种必然的需求。目前的很多手机都只能查询通讯录中的普通电话号码,不查询电子邮件地址或VOIP语音电话号码,而将这些信息作为附加信息内容。在电子邮件和VOIP语音电话的实际使用中,我们需要根据电子邮件地址和VOIP 语音电话号码来查询通讯录中的相关记录信息。因此,需要开发一种高效查询方法,使得能够同时查询通讯录中的普通电话号码,电子邮件地址和VOIP语音电话号码。

发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种能够统一查询通讯录中的普通电话号码,电子邮件地址和VOIP语音号码,而且采用3个哈希值进行字符串校验的方案,方法简洁、高效的手机通讯录号码查询信息处理方法。本发明的目的可以通过以下技术方案来实现一种手机通讯录号码查询信息处理方法,其特征在于,该方法包括以下步骤1)手机内部处理器抽取通讯录中所有的电话号码、电子邮件地址和VOIP语音电话号码字符串生成一个哈希表;幻手机内部处理器对用户输入的电话号码、电子邮件地址或VOIP语电音话号码字符串进行处理并生成哈希值,然后根据该哈希值从哈希表中查询通讯录中的相应记录。所述的步骤1)中的电子邮件地址和VOIP语音电话号码的命名必须符合电子邮件命名规则,即第一部分是用户信箱账号;第二部分是分隔符@ ;第三部分是用户信箱的邮件接收服务器域名。所述的步骤1)中的哈希表的生成包括以下步骤11)创建并生成一个长度为 0x500,数组元素为32位的一维查询表;1 创建一个长度为通讯录最大记录数Tjnax的一维数组T_array,该数组的元素为一个包含记录索引号以及和该记录每个电话号码相关的 3个哈希值,和每个电子邮件地址相关的3个哈希值,和每个VOIP语音电话号码相关的3 个哈希值的结构体;1 计算每个记录中相关的哈希值并将该记录放入到数组T_array中; 14)确定哈希表的长度H_len并创建一个长度为H_len的哈希数组,将数组中的元素初始化;1 由电话号码的第一个哈希值确定该电话号码所属记录在T_array数组中的索引值在哈希表中的存放位置;由电子邮件地址的第一个哈希值确定该邮件地址所属记录在T_ array数组中的索引值在哈希表中的存放位置;由VOIP语音电话号码第一个哈希值确定该号码所属记录在T_array数组中的索引值在哈希表中的存放位置;在哈希表中的存放位置可以由哈希值对哈希表长度H_len取模运算获得,如果两个字符串映射到哈希表的同一个位置,即哈希表的某个位置已经存放非T_max+1的元素值,那么采用顺延的处理方式,即当前位置加1直到遇到还没使用的哈希表位置。所述的步骤14)中的哈希表的长度H_len的确定方法为,确定通讯录中最多能存储的电话号码,电子邮件地址和VOIP语音电话号码数目N_max,然后取一个大于2N_max的最小质数作为哈希表的长度H_len。所述的步骤2)手机内部处理器对用户输入的电话号码、电子邮件地址或VOIP语电音话号码字符串进行处理并生成哈希值,然后根据该哈希值从哈希表中查询通讯录中的相应记录的具体方法包括以下步骤21)根据用户输入的电话号码、电子邮件地址或VOIP 语音电话号码生成3个哈希值;22)对第一个哈希值用H_len进行取模运算获得哈希表中的存储位置;23)判断存储位置是否为空,如果判断为是,则该号码或邮件地址不在通讯录中,返回;如果判断为否,则根据哈希表中存储的数组索引值获取T_array中的一个记录; 24)将步骤21)中生成的3个哈希值和该记录中所有电话号码,电子邮件地址和VOIP语音电话号码的哈希值进行匹对,并判断匹对是否成功,如果判断为是,则表示找到了该号码或邮件地址,返回;如果判断为否,则移到哈希表的下一个位置进行重新匹对,如果已到了表末尾那么移到表的起始位置继续匹对工作;如果遇到所在位置为空或重新回到原来的位置,说明字符串没有找到,则返回。与现有技术相比,本发明能够统一查询通讯录中的普通电话号码,电子邮件地址和VOIP语音号码,而且采用3个哈希值进行字符串校验的方案,即一个用于哈希表下标,两个用于验证,方法简洁而且高效。


图1为是创建查询表流程示意图;图2是哈希值生成流程示意图;图3是哈希表创建流程示意图;图4是号码查询流程示意图。
具体实施例方式下面结合附图和具体实施例对本发明进行详细说明。实施例一种手机通讯录号码查询信息处理方法,该方法包括以下步骤步骤1)手机内部处理器抽取通讯录中所有的电话号码、电子邮件地址和VOIP语音电话号码字符串生成一个哈希表;其中电子邮件地址和VOIP语音电话号码的命名必须符合电子邮件命名规则,即第一部分是用户信箱账号;第二部分是分隔符@ ;第三部分是用户信箱的邮件接收服务器域名。哈希表的生成包括以下步骤步骤11)创建并生成一个长度为0x500,数组元素为32位的一维查询表;步骤12)创建一个长度为通讯录最大记录数Tjnax的一维数组T_array,该数组的元素为一个包含记录索引号以及和该记录每个电话号码相关的3个哈希值,和每个电子邮件地址相关的3个哈希值,和每个VOIP语音电话号码相关的3个哈希值的结构体;步骤1 计算每个记录中相关的哈希值并将该记录放入到数组T_array中;步骤14)确定哈希表的长度H_len并创建一个长度为H_len的哈希数组,将数组中的元素初始化;哈希表的长度^甜的确定方法为,确定通讯录中最多能存储的电话号码,电子邮件地址和VOIP语音电话号码数目N_maX,然后取一个大于2N_maX的最小质数作为哈希表的长度11611。步骤15)由电话号码的第一个哈希值确定该电话号码所属记录在T_array数组中的索引值在哈希表中的存放位置;由电子邮件地址的第一个哈希值确定该邮件地址所属记录在T_array数组中的索引值在哈希表中的存放位置;由VOIP语音电话号码第一个哈希值确定该号码所属记录在T_array数组中的索引值在哈希表中的存放位置;在哈希表中的存放位置可以由哈希值对哈希表长度H_len取模运算获得,如果两个字符串映射到哈希表的同一个位置,即哈希表的某个位置已经存放非T_max+1的元素值,那么采用顺延的处理方式,即当前位置加1直到遇到还没使用的哈希表位置。步骤2)手机内部处理器对用户输入的电话号码、电子邮件地址或VOIP语电音话号码字符串进行处理并生成哈希值,然后根据该哈希值从哈希表中查询通讯录中的相应记录。其具体包括以下步骤步骤21)根据用户输入的电话号码、电子邮件地址或VOIP语音电话号码生成3个哈希值;步骤2 对第一个哈希值用H_len进行取模运算获得哈希表中的存储位置;步骤23)判断存储位置是否为空,如果判断为是,则该号码或邮件地址不在通讯录中,返回;如果判断为否,则根据哈希表中存储的数组索引值获取T_array中的一个记录;步骤24)将步骤21)中生成的3个哈希值和该记录中所有电话号码,电子邮件地址和VOIP语音电话号码的哈希值进行匹对,并判断匹对是否成功,如果判断为是,则表示找到了该号码或邮件地址,返回;如果判断为否,则移到哈希表的下一个位置进行重新匹对,如果已到了表末尾那么移到表的起始位置继续匹对工作;如果遇到所在位置为空或重新回到原来的位置,说明字符串没有找到,则返回。如图1所示,将seed值初始化后经过一系列取模和位操作生成的数值放入查询表中,该查询表将用于后续的同一字符串不同3个哈希值的生成,查询表中每个元素为4字节即32位的长度。步骤101),初始化种子变量的值,并将查询表索引值初始化为0 ;步骤102),将种子变量乘以125并和3相加,再将该结果取0x2AAAAB的余数并将该余数重新赋值给种子变量;步骤103),将种子变量和OxFFFF做位与操作并将结果左移16位,然后将结果赋值给临时变量1 ;步骤104),将种子变量乘以125并和3相加,再将该结果取0x2AAAAB的余数并将该余数重新赋值给种子变量;步骤105),将种子变量和OxFFFF做位与操作并将结果赋值给临时变量2 ;步骤106),将两个临时变量按位或操作,将其结果放入到由查询索引值所指定的查询表位置,并将查询表索引值加1 ;步骤107),判断是否还有查询表元素值未生成,判断为是则返回步骤102),判断为否则进行步骤108);步骤108),创建查询表结束。在图2中,根据传入的字符串和需要生成的哈希值类型,生成一个哈希值。首先字符串中每个字符被转化为大写,然后利用哈希值类型和字符值做相应运算后获得的值作为索引去查询查询表中的值并将该值和Seedl+Seed2做或操作并赋值给seedl,然后根据字符值,seedl和Seed2的值计算后重新获得Seed2的值,按上述方法重复循环直到处理完字符串中的所有字符为止,将生成的seedl作为哈希值返回。步骤201)初始化两个种子变量的值;初始化字符串指针使其指向输入字符串;步骤202)判断字符串指针是否未指向最后一个字符,如果判断为是则进行步骤 203),否则进行步骤207);步骤20 将当前字符变成大写并赋值给临时变量;字符串指针加1 ;步骤204)将获取哈希值类型参数左移8位后和临时变量相加做为查询表索引,获取查询值;步骤20 将查询值和两种子变量之和做或操作后赋值给第一个种子变量;步骤206)将第二个种子变量左移5位,然后和临时变量,第一个种子变量,第二个种子变量相加,并加该结果加3后再赋值给第二个种子变量,并返回步骤202);步骤207)返回初始化种子变量的值。如图3所示,在手机开机时需要首先根据已保存的通讯录信息创建一个哈希表。 创建哈希表时,首先利用图1所示的流程创建一个查询表,然后建立一个能包含最大通讯录记录数的数组T_array,该数组用来存储每条记录的记录号RecoreNo,电话号码的3个哈希值,电子邮件地址的3个哈希值和VOIP语音电话的3个哈希值。根据数组中的电话号码, 电子邮件地址和VOIP语音电话的第一个哈希值得出该数组元素索引在哈希表中的存储位置,并以此创建哈希表。步骤301)创建并生成一维查询表;步骤30 创建通讯记录数组;创建哈希数组;步骤30 从通讯录中取一个记录,计算电话号码哈希值并保存到通讯记录数组中;步骤304)计算电子邮件地址哈希值并保存到通讯记录数组元素中;步骤305)计算VOIP语音电话号码哈希值并保存到通讯记录数组元素中;步骤306)判断是否所有记录都遍历完了,如果判断为是则进行步骤307),否则返回步骤302);步骤307)将通讯记录数组元素索引值重新置为0 ;步骤308)根据通讯记录数组元素中保存的第一个电话号码哈希值,第一个邮件地址哈希值和第一个VOIP电话号码哈希值计算出三个哈希表位置,然后将该元素在通讯记录数组中的索引值分别存入到上述三个位置;步骤309)通讯记录数组元素索引值加1 ;步骤310)判断是否T_array所有数据都遍历完,如果判断为是则进行步骤311),否则返回步骤307);步骤311)哈希表创建完毕。在图4中,如果有来电电话号码,电子邮件地址和VOIP语音电话号码需要对通讯录进行查询,那么首先根据该字符串生成3个哈希值。根据第一个哈希值得出T_array元素的索引值,并将生成的3个哈希值和T_array保存的所有号码的哈希值进行匹对操作。如果匹对成功,就能获得通讯录中的具体记录的记录号码RecordNo,并以此获取详细的记录 fn息ο步骤401)根据电话号码,电子邮件地址或VOIP语音电话号码生成三个哈希值。步骤40 根据第一个哈希值计算哈希表中的位置并记下该位置初始值。步骤403)判断在该位置哈希表元素是否为空,如果判断为是则进行步骤410),否则进行步骤404)。步骤404)获取该号码在通讯记录数组中的索引号。步骤40 根据索引号获取通讯记录数组中的元素并将该元素电话号码的三个哈希值和根据输入字符串生成的三个哈希值进行匹对,判断是否相等,如果判断为是则进行步骤408),否则进行步骤406)。步骤406)根据索引号获取通讯记录数组中的元素并将该元素邮件地址的三个哈希值和根据输入字符串生成的三个哈希值进行匹对,判断是否相等,如果判断为是则进行步骤408),否则进行步骤407)。步骤407)根据索引号获取通讯记录数组中的元素并将该元素VOIP号码的三个哈希值和根据输入字符串生成的三个哈希值进行匹对,判断是否相等,如果判断为是则进行步骤408),否则进行步骤411)。步骤408)询成功,根据该数组元素中保存的记录号读取详细通讯录记录信息。步骤409)查询结束推出。步骤410)查询失败,并进行步骤409)。步骤411)将哈希表位置值加1,如果新的值已经大于等于哈希表长度,那么将该值置为0。步骤412)判断新的哈希位置值是否和前面记录的初始位置值相同,如果判断为否则返回步骤403)。
权利要求
1.一种手机通讯录号码查询信息处理方法,其特征在于,该方法包括以下步骤1)手机内部处理器抽取通讯录中所有的电话号码、电子邮件地址和VOIP语音电话号码字符串生成一个哈希表;2)手机内部处理器对用户输入的电话号码、电子邮件地址或VOIP语电音话号码字符串进行处理并生成哈希值,然后根据该哈希值从哈希表中查询通讯录中的相应记录。
2.根据权利要求1所述的一种手机通讯录号码查询信息处理方法,其特征在于,所述的步骤1)中的电子邮件地址和VOIP语音电话号码的命名必须符合电子邮件命名规则,即第一部分是用户信箱账号;第二部分是分隔符@ ;第三部分是用户信箱的邮件接收服务器域名。
3.根据权利要求1所述的一种手机通讯录号码查询信息处理方法,其特征在于,所述的步骤1)中的哈希表的生成包括以下步骤11)创建并生成一个长度为0x500,数组元素为32位的一维查询表;12)创建一个长度为通讯录最大记录数Tjnax的一维数组T_array,该数组的元素为一个包含记录索引号以及和该记录每个电话号码相关的3个哈希值,和每个电子邮件地址相关的3个哈希值,和每个VOIP语音电话号码相关的3个哈希值的结构体;13)计算每个记录中相关的哈希值并将该记录放入到数组T_array中;14)确定哈希表的长度H_len并创建一个长度为H_len的哈希数组,将数组中的元素初始化;15)由电话号码的第一个哈希值确定该电话号码所属记录在T_array数组中的索引值在哈希表中的存放位置;由电子邮件地址的第一个哈希值确定该邮件地址所属记录在T_ array数组中的索引值在哈希表中的存放位置;由VOIP语音电话号码第一个哈希值确定该号码所属记录在T_array数组中的索引值在哈希表中的存放位置;在哈希表中的存放位置可以由哈希值对哈希表长度H_len取模运算获得,如果两个字符串映射到哈希表的同一个位置,即哈希表的某个位置已经存放非T_max+1的元素值,那么采用顺延的处理方式,即当前位置加1直到遇到还没使用的哈希表位置。
4.根据权利要求3所述的一种手机通讯录号码查询信息处理方法,其特征在于,所述的步骤14)中的哈希表的长度H_len的确定方法为,确定通讯录中最多能存储的电话号码, 电子邮件地址和VOIP语音电话号码数目N_maX,然后取一个大于2N_maX的最小质数作为哈希表的长度H_len。
5.根据权利要求1所述的一种手机通讯录号码查询信息处理方法,其特征在于,所述的步骤2)手机内部处理器对用户输入的电话号码、电子邮件地址或VOIP语电音话号码字符串进行处理并生成哈希值,然后根据该哈希值从哈希表中查询通讯录中的相应记录的具体方法包括以下步骤21)根据用户输入的电话号码、电子邮件地址或VOIP语音电话号码生成3个哈希值;22)对第一个哈希值用H_len进行取模运算获得哈希表中的存储位置;23)判断存储位置是否为空,如果判断为是,则该号码或邮件地址不在通讯录中,返回; 如果判断为否,则根据哈希表中存储的数组索引值获取T_array中的一个记录;24)将步骤21)中生成的3个哈希值和该记录中所有电话号码,电子邮件地址和VOIP 语音电话号码的哈希值进行匹对,并判断匹对是否成功,如果判断为是,则表示找到了该号码或邮件地址,返回;如果判断为否,则移到哈希表的下一个位置进行重新匹对,如果已到了表末尾那么移到表的起始位置继续匹对工作;如果遇到所在位置为空或重新回到原来的位置,说明字符串没有找到,则返回。
全文摘要
本发明涉及一种手机通讯录号码查询信息处理方法,该方法包括以下步骤1)手机内部处理器抽取通讯录中所有的电话号码、电子邮件地址和VOIP语音电话号码字符串生成一个哈希表;2)手机内部处理器对用户输入的电话号码、电子邮件地址或VOIP语电音话号码字符串进行处理并生成哈希值,然后根据该哈希值从哈希表中查询通讯录中的相应记录。与现有技术相比,本发明具有能够统一查询通讯录中的普通电话号码,电子邮件地址和VOIP语音号码,而且采用3个哈希值进行字符串校验的方案,方法简洁、高效等优点。
文档编号H04M1/275GK102572050SQ201010580170
公开日2012年7月11日 申请日期2010年12月9日 优先权日2010年12月9日
发明者张淼, 胡向红 申请人:希姆通信息技术(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1