`
xkorey
  • 浏览: 153455 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

短ID生成基于62进制

阅读更多
下午突然想到要做一个生成基于62进制的短ID,网上找了一些资料,

说到用到辗除法,于是实现了一下。不知道正不正确,

数字和字符串能够相互转换。

贴在这里留做以后备用。



public class ShortId {

	private final char[] str = { '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' };
	
	private final String _str=new String(str);

	int len = str.length; 

	public String toStr(long num) {
		if(num<len){
			return ""+str[(int)num];
		}
		int a = (int)num%len;
		int b = (int)num/len;
		char e=str[a];
		if(b>=len){
			return ""+toStr(b)+e;
		}else{
			return ""+str[b]+e;
		}
	}

	public long toNum(String s) {
		int a = s.length()-1;
		long val=0;
		for(int i=a;i>=0;i--){
			char c = s.charAt(i);
			val += (_str.indexOf(c)*Math.pow(len, a-i));
		}
		return val;
	}

	public static void main(String[] args) {
		ShortId s64 = new ShortId();
		long num=45236;
		String enCode=s64.toStr(num);
		long deCode = s64.toNum(enCode);
		System.out.println("短Id是:"+enCode);
		System.out.println("Id是:"+deCode);
	}

          

}

输出:

短Id是:bLC
Id是:45236
0
0
分享到:
评论
1 楼 yixiandave 2014-08-30  
不喜欢写一长串char[]。。。直接写一个String然后调charAt效率应该差不多吧

相关推荐

    java根据时间生成唯一ID

    java根据时间生成唯一ID,普通的根据时间生成的ID放在循环内很容易重复。

    细聊分布式ID生成方法.pdf

    这是一种基于Twitter开源的ID生成算法。它通过将ID分成多个部分(如时间戳、机器ID、序列号等),从而保证了ID的全局唯一性。此算法广泛应用于高并发场景下的分布式系统中。 - **优点**:支持高并发,性能优越;...

    asp.net从数据库中读二进制生成word文件并转换为MHT文件

    这里使用SQL查询语句来获取存储在`DataDict_Resources`表中id为'1'的记录,其`resources`字段包含Word文档的二进制数据。通过`DataTable`对象`dt2`存储查询结果,然后提取第一行的`resources`数据,将其类型转换为`...

    唯一uuidid生成器

    Vesta-ID-Generator这个文件名可能是特定的ID生成库,它可能提供了更高级的功能,比如定制化的ID生成策略,或者优化的性能以满足高并发环境的需求。在实际项目中,开发者可能会选择这样的库来代替标准的Java UUID...

    最新PHP短网址生成系统源码短链接生成系统源码URL缩短器系统源码.txt

    假设我们要开发一个基于PHP的短网址生成系统,具体步骤如下: 1. **需求分析**:明确项目目标、功能需求及性能指标。 2. **架构设计**:确定系统整体架构和技术选型,比如前端框架、后端框架、数据库类型等。 3. **...

    java 获取分布式唯一ID.雪花ID

    使用时,你需要创建一个`SnowflakeIdWorker`实例,它会根据系统时间和工作节点ID生成ID。例如: ```java import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; ...

    基于PHP的二进制在线转换php版源码.zip

    标题中的“基于PHP的二进制在线转换php版源码.zip”表明这是一个使用PHP编程语言实现的二进制数据转换工具的源代码包。这个工具可能允许用户在Web上上传二进制文件,并将其转换为其他格式或者进行特定的二进制操作。...

    cpp-基于TwitterSnowflake的ID生成作为redis模块

    Twitter Snowflake算法是一种广泛使用的ID生成方案,其设计思路巧妙,能有效地解决高并发环境下的ID生成问题。这个项目将Twitter Snowflake算法集成到了Redis模块中,使得ID生成服务更加高效和便捷。 **Twitter ...

    MFC进制转换.7z

    总的来说,这个项目是一个基于MFC的进制转换应用实例,它涵盖了C++编程、MFC框架的应用、用户界面设计和交互逻辑实现等多个方面,对于提升开发者在Windows应用程序开发中的技能具有一定的价值。尽管存在UI设计上的...

    利用时间生成8位不重复数

    生成的8位十六进制字符串在大多数情况下已经足够独特,但考虑到时间戳的精度,如果系统在同一秒内需要生成多个不重复的8位数字,可能需要结合其他策略,如添加进程ID、随机数或者序列号,以确保在极短时间内生成的ID...

    VB根据硬件ID以及程序ID高效率生成注册码实例

    本实例将探讨如何基于硬件ID和程序ID高效地生成注册码,确保软件的独特性和安全性。 硬件ID通常指的是计算机的唯一标识,如主板的BIOS序列号、硬盘ID或网卡MAC地址。这些信息可以用来限制注册码只能在特定的硬件...

    基于Javascript实现的不重复ID的生成器

    我今天要做的就是做一个不重复ID的生成器 /** * 生成一个用不重复的ID */ function GenNonDuplicateID():String{ } 先看看下面的几个方法 1.生成[0,1)的随机数的Math.random,例如 //我这次运行生成的是:0....

    Guid号生成器,可以生成32位Guid号

    Guid号的生成机制是基于时间戳、机器地址、进程ID等多种因素,通过特定算法混合计算得出,这使得在理论上,即使在全局范围内,Guid的重复概率也极其微小。由于其独特性和随机性,Guid通常用于生成数据库中的主键,...

    利用雪花算法生成uuid

    雪花算法(Snowflake)是Twitter开源的一种分布式ID生成算法,它能有效地生成全局唯一的64位ID,这在很多场景下可以替代传统的UUID。 雪花算法的核心思想是将ID分为多个部分,分别是时间戳、工作节点ID和序列号,...

    50_一个关键的问题!分库分表之后全局id咋生成?.zip

    其中,时间戳部分确保了ID的全局唯一性,工作节点ID则避免了同一毫秒内不同节点生成相同的ID,序列号则解决了同一节点在同一毫秒内的ID生成。在Java环境中,可以通过实现Snowflake算法的类来生成这样的ID,这通常比...

    一个很小的124字节安全url友好的唯一字符串ID生成器的JavaScript.zip

    标题中的“一个很小的124字节安全url友好的唯一字符串ID生成器的JavaScript”指的是一种在JavaScript环境中实现的高效且具有特定特性的唯一标识符生成算法。这种生成器设计的目标是创建短小、安全并且适用于URL的...

    Mysql全局ID生成方法

    MySQL全局ID生成方法是数据库设计中的一个重要议题,特别是在大规模分布式系统中,确保ID的全局唯一性和高并发下的高效生成是数据库架构的关键要素。以下是一些常见的全局ID生成策略: 1. **基于CAS(Check and Set...

    全局唯一id生成器vesta.rar

    在分布式环境中,为了确保每个实体的标识都是唯一的,全局唯一ID生成器扮演着至关重要的角色。Vesta的设计目标是高效、可扩展且无冲突,使得在大规模并发场景下也能稳定工作。 Vesta的工作原理基于Snowflake算法的...

    delphi id 生成

    ID生成器的设计和实现涉及到多个知识点,包括数据类型、随机数生成、哈希函数以及编码转换等。以下是对这些关键点的详细阐述: 1. **数据类型**:在Delphi中,16位ID通常表示为`Word`类型,它能够存储0到65535之间...

Global site tag (gtag.js) - Google Analytics