C# | 【完全开源】手机号码归属地查询,一秒内百万次查询
@[toc]
简介
这个开源项目是一个.NET库,可以通过手机号码获取号码归属地信息,包括运营商、国家、省份、城市、邮政编码、区号等信息。
该库加载了一个包含46万条数据的“中国手机号归属地信息”数据集,并实现了高速查询。在我的7年老笔记本上执行一百万次查询耗时不足一秒。
快速上手
以查询中国大陆的手机号码归属地信息为例:
在NuGet页面中勾选预发行版本并搜索 ApeFree.Phone2Location.CN ,点击安装。
查询手机号码归属地的源码如下:
// 创建数据库
var db = PhoneDatabase.Factory.CreateChinaPhoneDatabase();
// 通过手机号码获取归属地信息
var result = db.GetLocationByPhone("13500008888");
if (result == null)
{
Console.WriteLine("未查询到结果");
}
else
{
// 打印显示
Console.WriteLine($"国家:{result.Country}\r\n省份:{result.Province}\r\n城市:{result.City}\r\n运营商:{result.TelecomOperator}\r\n区号:{result.AreaCode}\r\n邮编:{result.PostalCode}");
}
运行上述代码将输出如下结果:
国家:中国
省份:广东
城市:广州
运营商:移动
区号:020
邮编:510000
原理
在实例化的时候就加载“中国手机号归属地信息”数据集,并计算出索引的数量和偏移地址。
在查询时,使用二分法查询号码信息所处的偏移地址,再从偏移地址使用流读取详细信息,并构造查询结果。
之所以能够一秒内百万次查询,是因为其使用了二分法进行查询,并且使用了流进行数据读取和处理。
结束语
代码开源在:https://github.com/landriesnidis/ApeFree.Phone2Location,希望能够帮助到需要查询手机号码归属地信息的人。如果您对该项目有任何建议或意见,欢迎在GitHub上提issue或pull request。如果您觉得该项目对您有帮助,也欢迎在GitHub上为该项目点个赞。