下午突然想到要做一个生成基于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
分享到:
相关推荐
java根据时间生成唯一ID,普通的根据时间生成的ID放在循环内很容易重复。
我今天要做的就是做一个不重复ID的生成器 /** * 生成一个用不重复的ID */ function GenNonDuplicateID():String{ } 先看看下面的几个方法 1.生成[0,1)的随机数的Math.random,例如 //我这次运行生成的是:0....
基于的算法实现的ID生成器高级的健壮的可容错的网络服务。 它提供了: 可配置的二进制位数和最大序列数 可以批量获取ID 基于提供网络服务,可以提供服务 基于rpcx,可以提供分布式的,容错的网络服务 雪花算法的实现...
一个基于Snowflake算法PHP ID生成器(Twitter已宣布)。描述雪花算法PHP实现。 Snowflake是一项网络服务,可通过一些简单的保证大规模生成唯一的ID号。 第一位是未使用的符号位。 第二部分包括一个41位的时间戳...
基于unity+mysql的门禁管理系统;...1.ID读卡器(十进制) 2.mysql数据库 3.windows系统 完善: 1.系统正在日益完善,会不断增加新的功能 2.读者们有什么不懂随时可以私信小编 3.有什么意见欢迎与小编探讨
该项目致力于利用成千上万条带有标签的电影评论来训练二进制分类模型,该模型将纯粹基于评论中的单词来预测新电影评论的情绪。 为了完成此任务,此存储库中包含以下文件: alldata.tsv :此文件包含评论的完整数据...
1.概述 从MYSQL5.6 开始,mysql开始支持GTID复制。... GTID即全局事务ID,器保证为每一个在主上提交的事务在复制集群中可以生成一个的ID. GTID=source_id:transaction_id source_id:是主库的ser
配置文件将读取以下配置数据:MQTT: 托管MQTT服务器的主机名或IP地址端口,要使用的服务器端口client_id,未设置的客户端ID,则将生成随机uuid keepalive,TCP / TLS连接保持活动状态安全: cacerts,证书文件的...
Visual SQLTools 2012 Pro - 是一套专业的数据库及SQL开发工具,基于.NET Framework 和.NET Data Provider技术开发,历时十年精心打造而成,支持Oracle,SQLServer,MySQL,DB2,Sybase,PostgreSQL,Access 7种常用数据库...
在 WavePro 7 Zi 生成的文件上进行测试。 % ReadLeCroyBinaryWaveform - 读取由力科示波器创建的二进制波形文件% 波形 = LeCroyBinaryWaveform(FILENAME) 将波形文件加载到工作区变量 W 中。 % FILENAME 可以是...
usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。...uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。 time_sleep_until() 函数延迟代码执行直到指定的时间....
基于来自控制台的反馈事件流和游戏状态生成触觉反馈。 设置环境 在此处安装最新的软件包。 安装蒸汽和半条命爱莉克斯游戏。 从存储库下载最新发布的二进制文件 配置 1 在 Steam 的游戏属性中设置半条命 Alyx 的启动...
智能组卷功能一般应包含系统维护、试题录入、试题检索、试卷生成、复习题生成等基本模块。对于每个应试者来说,试卷的题型和题量都应是相同的,但试题并不相同。自动组卷的效率与质量完全取决于抽题算法的设计。如何...
热情好客 Passy是Node.js的CommonJS模块,具有身份和随机ID生成功能。 它使用baseURL编码,并创建了各种预定义长度的ID(带有内置的创建日期),以及任意长度的纯随机ID。 基于时间的ID将创建日期存储在其中,因此不...
waPC CLI WebAssembly过程调用命令行界面。问题WebAssembly能够在主机和来宾之间传递和接受简单的数字参数,而非平凡的应用程序则希望利用更复杂的数据类型,例如... waPC在内部利用基于称为WIDL的交互式数据语言(ID
肿瘤评估的统计方法 该存储库包含我为学士学位论文编写的代码。 我进行的研究的目的是基于统计学方法(Smirnov和Kolmogorov-Smirnov检验)为几种...此向量是通过分割肿瘤区域以生成肿瘤的二进制掩码手动生成的); cj
Nuclide-软件开发套件围绕idTech构建的软件开发套件,专注于经过验证...建筑'build_engine.sh'脚本检出FTE Subversion存储库并保持最新状态,同时还生成对运行和构建游戏逻辑(都是QuakeC)至关重要的二进制文件,并将
药库特征所有类型和功能都是从自动生成的所有类型和功能都带有验证和良好的IDE类型提示(感谢 ) 一组高级API方法,使使用tdlib更加简单仅使用TDLib v1.7.3进行了测试。 不保证支持其他版本的TDLib 仅针对包括macOS...
日期日历、删除、EJB查询语言(45)、嵌入式、嵌入式Id、实体生命周期 实体管理器、实体监听、枚举、撷取、查找、生成原密钥 继承、列链接、锁、多对多映射、多对一映射、映射键 命名查询、本地查询、一对多映射、一对...
用于进行基于图像的蘑菇识别的工具 概述: 设置: # venv: python3 -m venv mushroomobserver_venv source mushroomobserver_venv/bin/activate pip3 install -r requirements.txt 伪像: 预处理: python3 ...