`

电话号码压缩方法

阅读更多


/**
 * 电话号码采用62进制压缩方法工具
 * @author XuGuo
 * @since 2013-3-9
 */
public class TelephoneCompressUtil {
	
	private static char[] bit62 = new char[]{'0','1','2','3','4','5','6','7','8','9',
			'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
			'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String telephoneNumberStr = "18957124766";
		long telephoneNumber = Long.parseLong(telephoneNumberStr);
		System.out.println(telephoneNumber);
		String abc = digit10to16(telephoneNumber);
		System.out.println("十进制数转换成六十二进制数结尾为:"+abc);
		System.out.println("六十二进制数转换成十进制数结尾为:"+digit16to10(abc));
	}
	
	/**
	 * 十进制数(18957124766)转换成六十二进制数(kGWa8S)
	 * 18957124766除以62等于305760076;  18957124766除以62取余54
	 * 305760076除以62等于4931614;  305760076除以62取余8
	 * 4931614除以62等于79542;  4931614除以62取余10
	 * 79542除以62等于1282;  79542除以62取余58
	 * 1282除以62等于20;  1282除以62取余42
	 * 20除以62等于0;  20除以62取余20
	 * @param source10digit
	 * @return
	 */
	public static String digit10to16(long source10digit){
		StringBuffer sb = new StringBuffer();
		long b = divisionBy62(source10digit);
		int a = modBy62(source10digit);
		long temp = 0;
		System.out.println(source10digit+"除以62等于"+b+";  "+source10digit+"除以62取余"+a);
		while(b>0){
			sb.append(bit62[a]);
			temp = b;
			a = modBy62(b);
			b = divisionBy62(b);
			System.out.println(temp+"除以62等于"+b+";  "+temp+"除以62取余"+a);
		}
		sb.append(bit62[a]);
		String abc = sb.reverse().toString();
		return abc;
	}
	
	/**
	 * 对十进制数除以62
	 * @param dividend
	 * @return
	 */
	private static long divisionBy62(long dividend){
		return dividend/62;
	}
	
	/**
	 * 对十进制数除以62取余
	 * @param dividend
	 * @return
	 */
	private static int modBy62(long dividend){
		return (int)(dividend%62);
	}
	
	/**
	 * 获取六十二进制数字符在该进制规范中的顺序编号
	 * @param a
	 * @return
	 */
	private static int digit16by10(char a){
		for(int i = 0;i<bit62.length;i++){
			if(a == bit62[i]){
				return i;
			}
		}
		return 0;
	}
	
	
	/**
	 * 六十二进制数(kGWa8S)转换成十进制数结(18957124766)
	 * 20(k)*62^5=18322656640
	 * 42(G)*62^4=620606112
	 * 58(W)*62^3=13823024
	 * 10(a)*62^2=38440
	 * 8(8)*62^1=496
	 * 54(S)*62^0=54
	 * @param str
	 * @return
	 */
	public static long digit16to10(String str){
		if(str==null||"".equals(str.trim())){
			return 0;
		}else{
			long a = 0;
			int strLen = str.length();
			for(int i=0;i<strLen;i++){
				//System.out.println(digit16by10((char)str.charAt(i))+"("+str.charAt(i)+")*"+"62^"+(strLen-i-1)+"="+(digit16by10((char)str.charAt(i))*(long)Math.pow(62,strLen-i-1)));
				a = a+digit16by10((char)str.charAt(i))*(long)Math.pow(62,strLen-i-1);
			}
			return a;
		}
	}
}


分享到:
评论

相关推荐

    基于PHP的电话号码php抽奖系统源码.zip

    1. **电话号码验证**:使用正则表达式或其他方法检查用户输入的电话号码格式是否正确。 2. **数据库操作**:存储和检索电话号码,可能使用MySQL、SQLite或其他数据库管理系统。 3. **随机抽选算法**:确保抽选过程...

    一个脱敏插件,适用于Kettle9.0.的电子邮件、地址、ID号、电话号码等.zip

    的电子邮件、地址、ID号、电话号码等”表明这是一个专为数据处理工具Pentaho Data Integration(Kettle)设计的数据脱敏插件,主要用于保护敏感信息,如个人隐私。在数据处理和分析过程中,确保数据安全和隐私是非常...

    vb电话号码全方位速查(资源分原为3现在降分)

    标题中的“vb电话号码全方位速查”提示我们这个软件或工具可能使用了Visual Basic(VB)编程语言,用于实现电话号码的快速查找功能。VB是一种流行的面向对象的编程语言,常用于开发桌面应用,尤其适合快速开发。在这...

    通过号码获取归属地

    标题中的“通过号码获取归属地”指的是在信息技术领域中,使用特定的方法或服务来查询一个电话号码所属的地理区域或运营商。这通常涉及到电信数据库的查询,这些数据库包含了大量的电话号码及其对应的信息,如国家...

    在Linux桌面上打电话.pdf

    LIP Z4具备多种通话状态,可以存储32个最近拨打或接听的电话号码,便于快速查找和重拨。此外,它的工作原理并不复杂,类似于集成了网管交换机的软件版ZIP 4x4商用电话。 软件电话LIP Z4使用Kylix软件开发,对硬件...

    免费网络电话-无须话钱既可跟手机电话通话

    本文将深入探讨免费网络电话的工作原理、使用方法以及相关技术,帮助读者更好地理解和应用这种技术。 一、免费网络电话的工作原理 免费网络电话,也被称为VoIP(Voice over Internet Protocol),是通过互联网传输...

    JS实现异步上传压缩图片

    这里使用jQuery的`$.post()`方法发送POST请求到服务器端的`upload.php`,并将压缩后的图片Base64数据、电话号码(phone)和月份(month)作为参数传递。服务器返回的数据以JSON格式接收,然后根据返回的`msg`字段...

    电信设备-声音终端、声音终端的通信方法以及登记方法.zip

    在固定电话系统中,这通常涉及线路分配、号码分配等。在移动通信系统中,声音终端需要与基站建立连接,并在核心网络中完成身份验证和注册。对于VoIP电话,用户需要在服务提供商的服务器上进行账号注册,终端设备则...

    电话本,用VB做的,要代码的话找我,这是无第一次学做程序的

    【标题】中的“电话本,用VB做的”,指的是一个基于Visual Basic(VB)开发的电话号码簿应用程序。VB是微软公司推出的一种面向对象的、事件驱动的编程语言,非常适合初学者进行程序设计学习。这个项目可能是一个简单...

    程控交换机电话自动计费系统

    5. **网络通信类**:此标签表明该系统涉及到网络通信技术,意味着它可能具备处理ISDN、IP电话、VoIP等多种通信方式的能力,能够适应不断发展的通信网络环境。 6. **系统架构**:一个完整的电话自动计费系统通常包括...

    定时拨打电话程序

    在【压缩包子文件的文件名称列表】中提到的“定时拨打电话app”,通常会包含以下组件:主活动(MainActivity)负责界面展示和用户交互,定时器服务(TimerService)用于后台运行定时任务,权限请求相关的代码...

    汇编编写的电话本 实现了电话本的大多数功能

    3. 数据管理:设计数据结构存储联系人信息,可能包括姓名、电话号码等字段,以及相关的查找、插入和删除算法。 4. 查找功能:通过线性搜索或二分搜索等方法查找特定联系人。 5. 插入功能:在适当位置插入新的联系人...

    过滤txt文档的重复号码 asp

    本案例涉及的是使用ASP(Active Server Pages)脚本语言来处理TXT文档中的重复数据,特别是电话号码这类数字串。ASP是一种基于服务器端的脚本环境,可以用来生成动态网页。 标题“过滤txt文档的重复号码 asp”表明...

    1数字编码-压缩——学生学习课件

    编码可以应用于各种场景,如邮政编码、身份证号码、电话号码等。 #### 二、邮政编码的应用与结构 邮政编码是一种用于快速分发邮件的代码系统。在中国,邮政编码由六位数字组成: - **前两位**:表示省份或直辖市...

    手机号码验证mobilePhoneNumber.zip

    库内预置了全球多个国家和地区的手机号码格式规则,覆盖范围广泛,包括但不限于E.164国际电话号码标准,以及各国国内的电话号码规范。 该库依赖于jQuery,因此在使用前需确保项目中已经引入了jQuery库。在"jquery....

    JavaMe电话本仿nokia电话本

    3. **增加联系人**:添加新的联系人到电话本,需要创建一个新的Record,包含姓名、电话号码等字段,然后将其添加到对应的RecordStore中。 4. **查询联系人**:查询功能可以使用RecordStore的`findRecords()`或`...

    CS代码(重构算法程序)

    - `沙威_OMP.rar`:这里的“沙威_OMP”可能是一个作者或项目名称,与正交匹配追踪算法相关,OMP是压缩感知中寻找最优非零系数的高效方法。 - `l1_ls_matlab.rar`:L1最小二乘可能是L1范数约束下的最小二乘问题,一...

    电子功用-基于来电显示通讯协议标准的图文信息收发方法

    来电显示不仅提供打电话人的电话号码,还可以在某些情况下显示呼叫者的姓名。随着技术的发展,来电显示功能已经超越了基本的电话服务,扩展到了移动设备和互联网通信中,为用户提供更丰富的信息交流方式。 本资料...

    松下TDA200程控电话安装程序

    3. **配置工具**:用于设定电话系统的参数,如分机号码分配、分组设置、时间表、呼叫限制和语音邮件设置等。 4. **更新工具**:用于升级交换机的固件,以获取新的功能、修复已知问题或提高性能。 5. **用户手册**...

Global site tag (gtag.js) - Google Analytics