手机及其手机号归属信息的存储及查找方法

文档序号:7861441阅读:254来源:国知局
专利名称:手机及其手机号归属信息的存储及查找方法
技术领域
本发明涉及通信技术领域,尤其涉及一种手机及其手机号归属信息的存储及查找方法。
背景技术
手机是大众必备的通讯工具。基于国内的运营商的管理分区域以及电话资费分长途、市话等原因,使得用户有使用手机过程中,有实时了解各手机号归属信息的需求;例如,在查找通讯录或被对方呼叫等时候。基于目前的手机用户数庞大,使得分条存储各手机号及其归属信息的数据量巨大,占用存储空间,同时也给后续的使用查找造成很大的不便。

发明内容
本发明的主要目的在于公开一种手机及其手机号归属信息的存储及查找方法,以解决手机号及其归属信息因存储量巨大而导致的实用性差的问题。为达上述目的,本发明公开一种手机号归属信息的存储方法,所述归属信息至少包括市级或市级以下的归属地信息,该方法包括将隶属于同一归属地的所有手机号归类为同一大群;在各类大群中,将手机号的前7位或前8位设为手机号段,并将手机号段数值相连的系列号段归类为同一小群;在存储所述归属信息与手机号段的对应关系时,以小群为单位记录手机号段与归属地的对应关系,其中与各小群对应的各条存储记录存储有对应小群的手机号段起始值、号段最大偏移值及其归属地信息。与上述存储方法对应的,本发明还公开一种手机号归属信息的查找方法,包括提取所述手机号前7位为手机号段,比较该手机号段与存储记录中7位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,如果存在判断结果为是的存储记录,则从该条存储记录中解析出该手机号段的归属信息;否则,转下述步骤提取所述手机号前8位为手机号段,比较该手机号段与存储记录中8位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,直至查找出判断结果为是的存储记录,之后,从该条存储记录中解析出该手机号段的归属信息。相应的,本发明还公开一种手机,包括与内存建立通信连接的加载模块和手机号归属信息的查找模块,其中所述加载模块,用于将记录有手机号前7位或前8位的手机号段及其对应的归属信息的存储记录加载到内存,其中各存储记录以手机号段起始值加号段最大偏移值的形式存储有对应同一市级或市级以下归属地且号段相连的一小群手机号段;
所述手机号归属信息的查找模块,用于提取所述手机号前7位为手机号段,比较该手机号段与存储记录中7位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,如果存在判断结果为是的存储记录,则从该条存储记录中解析出该手机号段的归属信息;否则,提取所述手机号前8位为手机号段,比较该手机号段与存储记录中8位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,直至查找出判断结果为是的存储记录,之后,从该条存储记录中解析出该手机号段的归属信息。与现有技术相比,本发明至少具有以下优点精简了手机号归属信息的存储记录,极大地降低了手机号归属信息加载及存储所占用的内存,为归属信息的实用创造了条件,便于查找。进一步的,在存储归属信息与手机号段的对应关系时,将手机号段起始值以无符号长整型数据进行存储,将号段最大偏移值以无符号短整型或字符型数据进行存储,将表示归属地信息以无符号短整型数据进行存储;或者以24位的无符号整型数据存储所述手机号段起始值,以8位的无符号字符型数据 存储所述号段最大偏移值,以16位的无符号短整型数据存储所述归属地信息;藉此,可进一步降低了各存储记录的数据量大小。本发明公开的上述技术方案,兼容了三大运营商的所有手机号码,因此,即使用户换网保号(例如将手机号15810322568从北京移动转网成北京联通)也不会对其造成任何影响。此外,本发明公开的手机及其手机号归属信息的存储及查找方法,可以为运营商进行更细分的区域管理等提供了有利条件,例如,运营商可以藉此将现有的省内漫游资费系统从市级升级到县级,进而实现市内漫游。


图I是本发明实施例公开的手机号归属信息的存储流程示意图;图2是本发明实施例公开的手机号归属信息的查找流程示意图;图3是本发明实施例公开的手机功能模块的框架图。
具体实施例方式下面结合说明书附图对本发明的具体实现方式做一详细描述。实施例一本实施例公开一种手机号归属信息的查找方法,该归属信息至少包括市级或市级以下的归属地信息,如湖南长沙、贵州贵阳、北京海淀等。如图I所示,该方法包括以下步骤步骤SI、将隶属于同一市级或市级以下归属地的所有手机号归类为同一大群,在各类大群中,将手机号的前7位或前8位设为手机号段,并将手机号段数值相连的系列号段归类为同一小群。其中该步骤所述的“所有手机号”是指包括所有运营商的手机号,目前即指包括移动、联通和电信三大运营商的所有手机号。在该步骤中,值得说明的是现有的手机号段通常是指手机号的前3位,例如移动对应的手机号段有 139、138、137、136、135、134、147、150、151、152、157、158、159、182、183、187,188 ;联通130、131、132、155、156、185、186、145 ;电信133、153、180、189 ;然而该号段
的划分仅能表示其归属的运营商信息,却无法表示其归属地信息。该步骤中,基于各运营商发放手机号都有一定的规律可循,一般将手机号前7位或8位数字相同的手机号都投放到同一地区,从而使得本发明将手机的前7位或8位作为新的手机号段不仅能表示其运营商信息,也能表示其归属地信息,如贵阳移动,北京联通等等。因此,本发明所描述的号段指的是手机号前7位或8位的新号段,而不是现有的手机号前3位的旧号段,后续不再赘述。值得说明的是,由于依据手机号段起始值前3位的数值即可解析出手机号运营商的信息,因此,本实施例在存储记录中省略对手机号归属运营商的附加记录。另一方面,基于运营商在手机号的发放管理过程中,通常将连号的一串手机号段都投放到同一地区,以便于管理并满足庞大的用户需求;比如将15810 30至1581039这10个相连的手机号段都投放在北京市(甚至是某个区);从而为下述步骤将对应同一归属信息且连号的手机号段存放在同一条存储记录中提供了条件。步骤S2、在存储所述归属信息与手机号段的对应关系时,以小群为单位记录手机号段与归属地的对应关系,其中与各小群对应的各条存储记录存储有对应小群的手机号段起始值、号段最大偏移值及其归属地信息。该步骤即将对应同一归属地信息且连号的手机号段以手机号段起始值加偏移值的形式存放在一条存储记录中。假设移动运营商将1581030至1581039这10个相连的手机号段都投放在北京市,则对应“北京移动”这一归属信息的手机号段至少包括1581030至1581039这10个连号的手机号段,那么对应“北京移动”的这一号段区间对应的手机号段起始值则为1581030,其号段最大偏移值则为9。藉此,在该例中,在号段最大偏移值的作用下,一条存储记录可兼容存储的对应同一归属信息(北京移动)的10个连号的手机号段(1581030至1581039),精简了存储记录。该步骤中,各存储记录的存储格式可为{手机号段起始值,号段最大偏移值,归属地信息}。考虑到一个汉字字符存储一般需要2个字节,当手机归属地信息的字符串比较大时,比如,乌鲁木齐,则也比较占存储空间。为此,当所述归属信息为市级的归属地信息时,本发明实施例优选以手机号归属地的电话区号(也可以理解为归属地编号)来表示其归属地信息,而且,基于国内的区号的第一个字母都为零,因此在写入各条存储记录的归属地信息时,可进一步省略该电话区号的首位数字零,藉此,则各条存储记录的存储格式可为{手机号段起始值,号段最大偏移值,省略首位数字零的归属地电话区号}其中,在存储归属信息与手机号段的对应关系时,可以将对应同一归属信息的手机号段起始值、号段最大偏移值、归属地电话区号分别转换成无符号长整型、无符号字符型或短整型、无符号短整型数据进行存储。由于7位手机号段起始值以字符串进行存储时至少需要7个字节,而转换成无符号长整型数据进行存储后,缩减到4个字节内,因此减少了存储空间的占用。其中,将手机号段起始值转换成无符号长整型数可以参考调用C中用strtoul函数实现函数名称strtoul
函数原型unsigned long strtoul (const char*nptr, char**endptr, intbase);函数功能将字符串转换成无符号长整型数函数返回返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。函数说明Strt0Ul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或O。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。当base值为O时则是采用10进制做转换,但遇到如'Ox'前置字符则会使用16进制做转换。一开始strtoul O会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(")结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。
所属文件〈stdlib.h>#include<stdlib. h>#include<stdio. h>
int maini)
{
int a;
charpNum[]='OxFF"; a=strtoul(pNum,0,16); prii.itiT0/od\n",a); retum(O);
}将号段最大偏移值转换成无符号字符型或短整型、以及将归属地电话区号转换成无符号短整型的方法及步骤与上述“将手机号段起始值转换成无符号长整型”类似,在此不作赘述。上述无符号长整型(unsigned long)数据占用4个字节,共32位。在现有应用场景中,优选的,本实施例可进一步以无符号长整型数据存储起始手机号段及号段最大偏移值;如果使用其中的24位来表示号段起始值、使用其中的8位来表示号段最大偏移值,可表示的最大号段起始值为16777216,鉴于目前的8位手机号段中还未有“ 18”开头的数据,因此,完全满足当前的需求(即使以后出现8位“18”开头的号段数据,可以通过挪用其他数据的位数来实现);而使用其中的8位来表示号段最大偏移值,8位数据位可表示的最大数值为255,基本也可满足现有的手机归属地信息存储要求;而使用无符号短整型数据存储号段归属地电话区号,能表示的最大值为65535,也就是说,最多可以表示65536个地区,足以满足国内手机号归属地信息存储的需求。因此本实施例的存储记录格式(以位为单位)可以设置如下STRU—CALL—SRC—INFO {
unsigned int _prefix : 24; //号段(号码前缀) unsigned int prefixOffset: 8; //号多史偏汗多值 String unsigned int prefixidx : 16; //归属地信息
}如对应存储北京移动的1581150 1581159这10个号段的存储记录可为{1581150,9,10},该条存储记录共消耗内存为24+8+16=48位(6个字节)。上述格式即以24位的无符号整型数据存储所述手机号段起始值,以8位的无符号字符型数据存储所述号段最大偏移值,以16位的无符号短整型数据存储所述归属地信息。藉此,一条存储记录最多可以兼容存储对应同一归属地的256条连号的手机号段信息,极大地提高了存储效率。 值得说明的是,当所述归属地信息为市级以下县级或区级的归属地信息时,上述电话区号的表示方法则可替换成归属地编号,也可直接以文字字符串进行存储,如北京海淀。综上,本实施例公开的手机号归属信息的存储方法,精简了手机号归属信息的存储记录,同时也降低了各存储记录的数据量大小,极大地降低了手机号归属信息加载及存储所占用的内存,为归属信息的实用创造了条件,便于查找。实施例二本实施例公开一种与实施例一对应的手机号归属信息的查找方法,如图2所示,包括以下步骤步骤S4、提取手机号前7位为手机号段。步骤S5、查找内存的存储记录中是否有该手机号段的存储记录,如果没有,提取手机号前8位为新的手机号段,重新从内存的存储记录中查找与该新的手机号段对应的存储记录。在该步骤中,基于本发明实施例手机号归属信息的存储记录不经常变动且查找频繁,当存储记录采用顺序存储机构时,优选以“二分查找”方式查找手机号段对应的存储记录。二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。在其他实施例中,上述步骤S5的查找方式也可以替换为遍历查找方式,此皆为本领域技术人员熟知的技术,在此不作赘述。步骤S6、从匹配的存储记录中解析出该手机号所对应的归属信息,该归属信息至少包括归属地信息。在该步骤中,当存储记录以手机号归属地舍弃首位数字零的电话区号(即归属地编号)来表示市级的归属地信息时;则在解析归属地信息的过程中,对电话区号进行补零处理;该归属信息解析还包括从第三方获取所述电话区号对应的归属地信息(可选的,当手机内存加载有该归属地编号与其归属地的映射表时,可以直接在内存查表获取),较佳的,在显示归属信息时,还包括一并将所述归属地信息连带解析出的运营商信息一起以汉字字符串显示在手机界面上,其中,依据手机号段起始值前3位的数值(如139、189等等)即可解析出手机号运营商的信息。本实施例中,上述步骤S5和步骤S6的具体执行过程如下所述首先提取所述手机号前7位为手机号段,比较该手机号段与存储记录中7位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,如果存在判断结果为是的存储记录,则从该条存储记录中解析出该手机 号段的归属信息;否则,提取所述手机号前8位为手机号段,比较该手机号段与存储记录中8位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,直至查找出判断结果为是的存储记录,之后,从该条存储记录中解析出该手机号段的归属信息。其中解析过程举例如下基于上述STRU_CALL_SRC_INFO存储记录格式的解析号段归属地信息过程中,根据上述返回的_prefixldx,转换为字符串,并在前加“0”,得到号段对应的区号,然后进一步得出该区号对应的归属地名称。如{1581150,9,10}— 10 — 010 —北京藉此,本实施例公开的查找方法便捷,实用性强。实施例三与上述两实施例公开的存储和查找方法对应的,本实施例公开一种执行上述存储和查找线程的手机,其内部功能结构如图3所示,包括与内存I建立通信连接的加载模块2和手机号归属信息的查找模块3,其中加载模块,用于将记录有手机号前7位或前8位的手机号段及其对应的归属信息的存储记录加载到内存,其中各存储记录以手机号段起始值加号段最大偏移值的形式存储有对应同一市级或市级以下归属地且号段相连的一小群手机号段;手机号归属信息的查找模块,用于提取手机号前7位为手机号段,比较该手机号段与存储记录中7位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,如果存在判断结果为是的存储记录,则从该条存储记录中解析出该手机号段的归属信息;否则,提取手机号前8位为手机号段,比较该手机号段与存储记录中8位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,直至查找出判断结果为是的存储记录,之后,从该条存储记录中解析出该手机号段的归属信息。图3所示各功能模块运作的内部流程及相关处理可参照上述实施例一和实施例二。其中,本实施例中,加载模块所加载的各条存储记录的存储格式可为{手机号段起始值,号段最大偏移值,省略首位数字零的归属地电话区号},即以省略数字零的归属地电话区号作为归属地编号来表示归属地信息。
优选的,各条存储记录总共占用48比特的内存。其中,手机号段起始值占用24比特的内存,号段最大偏移值占用8比特的内存,省略数字零的归属地电话区号占用16比特的内存。在其他实施例中,也可在存储所述归属信息与手机号段的对应关系时,采用将手机号段起始值以无符号长整型数据进行存储,将号段最大偏移值以无符号短整型或字符型数据进行存储,将归属地信息以无符号短整型数据进行存储。优选的,上述查找模块优选“二分查找”方式进行查找并解析归属地信息。与此同时,该手机还可以依据手机号段起始值前3位的数值(如139、189等等)判断该手机号段所归属的运营商信息,并将得出的运营商信息与解析出的归属地信息组合后一起以汉字字符串显示在手机界面上。本实施例公开的手机,精简了手机号归属信息的存储记录,同时也降低了各存储记录的数据量大小,极大地降低了手机号归属信息加载及存储所占用的内存,为归属信息的实用创造了条件,便于查找。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领 域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种手机号归属信息的存储方法,所述归属信息至少包括市级或市级以下的归属地信息,其特征在于,该方法包括 将隶属于同一归属地的所有手机号归类为同一大群; 在各类大群中,将手机号的前7位或前8位设为手机号段,并将手机号段数值相连的系列号段归类为同一小群; 在存储所述归属信息与手机号段的对应关系时,以小群为单位记录手机号段与归属地的对应关系,其中与各小群对应的各条存储记录存储有对应小群的手机号段起始值、号段最大偏移值及其归属地信息。
2.根据权利要求I所述的手机号归属信息的存储方法,其特征在于,当所述归属信息为市级的归属地信息时,所述归属地信息以归属地的电话区号表示。
3.根据权利要求2所述的手机号归属信息的存储方法,其特征在于,还包括 写入各条存储记录的归属地信息时,省略该电话区号的首位数字零。
4.根据权利要求3所述的手机号归属信息的存储方法,其特征在于,在存储所述归属信息与手机号段的对应关系时,所述手机号段起始值以无符号长整型数据进行存储,所述号段最大偏移值以无符号短整型或字符型数据进行存储,所述归属地信息以无符号短整型数据进行存储;或者 以24位的无符号整型数据存储所述手机号段起始值,以8位的无符号字符型数据存储所述号段最大偏移值,以16位的无符号短整型数据存储所述归属地信息。
5.一种手机号归属信息的查找方法,其特征在于,包括 提取所述手机号前7位为手机号段,比较该手机号段与存储记录中7位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,如果存在判断结果为是的存储记录,则从该条存储记录中解析出该手机号段的归属信息;否则,转下述步骤 提取所述手机号前8位为手机号段,比较该手机号段与存储记录中8位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,直至查找出判断结果为是的存储记录,之后,从该条存储记录中解析出该手机号段的归属信息。
6.根据权利要求5所述的手机号归属信息的查找方法,其特征在于,当所述存储记录以手机号归属地舍弃首位数字零的电话区号来表示其市级的归属地信息时;则在解析归属信息的过程中,对电话区号进行补零处理。
7.根据权利要求5或6所述的手机号归属信息的查找方法,其特征在于,还包括 依照手机号段起始值的前3位数值判断该手机号段所归属的运营商信息,并将得出的运营商信息与解析出的归属地信息组合后一起以汉字字符串显示在手机界面上。
8.根据权利要求5或6所述的手机号归属信息的查找方法,其特征在于,查找手机号段对应的存储记录的方式为“二分查找”方式或遍历方式。
9.一种手机,其特征在于,包括与内存建立通信连接的加载模块和手机号归属信息的查找模块,其中 所述加载模块,用于将记录有手机号前7位或前8位的手机号段及其对应的归属信息的存储记录加载到内存,其中各存储记录以手机号段起始值加号段最大偏移值的形式存储有对应同一市级或市级以下归属地且号段相连的一小群手机号段; 所述手机号归属信息的查找模块,用于提取所述手机号前7位为手机号段,比较该手机号段与存储记录中7位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,如果存在判断结果为是的存储记录,则从该条存储记录中解析出该手机号段的归属信息;否则,提取所述手机号前8位为手机号段,比较该手机号段与存储记录中8位的手机号段起始值之间的差值并判断该差值是否大于或等于零且小于或等于该存储记录中的号段最大偏移值,直至查找出判断结果为是的存储记录,之后,从该条存储记录中解析出该手机号段的归属信息。
10.根据权利要求9所述的手机,其特征在于,在存储所述归属信息与手机号段的对应关系时,所述存储记录以小群为单位记录手机号段与归属地的对应关系,与各小群对应的各条存储记录存储有该小群的手机号段起始值、号段最大偏移值及其归属地信息,其中 所述手机号段起始值以无符号长整型数据进行存储,所述号段最大偏移值以无符号短整型或字符型数据进行存储,所述归属地信息以无符号短整型数据进行存储;或者 以24位的无符号整型数据存储所述手机号段起始值,以8位的无符号字符型数据存储所述号段最大偏移值,以16位的无符号短整型数据存储所述归属地信息。
全文摘要
本发明公开一种手机及其手机号归属信息的存储及查找方法,以解决手机号及其归属信息因存储量巨大而导致的实用性差的问题。本发明中,归属信息至少包括市级或市级以下的归属地信息,其存储方法包括将隶属于同一归属地的所有手机号归类为同一大群;在各类大群中,将手机号的前7位或前8位设为手机号段,并将手机号段数值相连的系列号段归类为同一小群;在存储所述归属信息与手机号段的对应关系时,以小群为单位记录手机号段与归属地的对应关系,其中与各小群对应的各条存储记录存储有对应小群的手机号段起始值、号段最大偏移值及其归属地信息。
文档编号H04W8/22GK102917341SQ201210362910
公开日2013年2月6日 申请日期2012年9月26日 优先权日2012年9月26日
发明者罗光喜, 黄国宏, 潘年华, 靳国文, 史红军, 周平, 王海, 晏利平, 李晓鹏 申请人:贵阳朗玛信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1