邀请码工具类
来源:互联网 发布:焦作淘宝线下实体店 编辑:程序博客网 时间:2024/05/14 13:01
package org.colin.utils;import java.util.Arrays;/** * 邀请码工具类 * @author Colin */public class InvitationCodeUtils { private static final String[] M1 = { "A", "W", "Z", "J", "M", "N", "7", "U", "S", "C", "8", "R", "F", "4", "9", "G", "H", "D", "Y", "K", "6", "V", "3", "B", "2", "E", "T", "L", "P", "Q", "5", "X" }; private static final String[] M2 = { "T", "V", "G", "Z", "J", "W", "4", "L", "Q", "N", "K", "Y", "2", "5", "9", "D", "H", "E", "B", "X", "S", "A", "M", "8", "U", "7", "3", "C", "P", "R", "F", "6" }; private static final String[] M3 = { "9", "K", "R", "V", "J", "S", "M", "N", "W", "C", "U", "D", "X", "Q", "8", "5", "H", "F", "B", "A", "L", "2", "P", "6", "3", "Y", "Z", "T", "7", "G", "E", "4" }; private static final String[] M4 = { "E", "F", "U", "G", "A", "9", "8", "L", "M", "5", "7", "X", "S", "R", "K", "6", "T", "N", "3", "W", "V", "P", "B", "2", "4", "D", "Z", "Y", "H", "J", "C", "Q" }; private static final String[] M5 = { "N", "C", "P", "J", "U", "3", "2", "T", "L", "S", "9", "W", "Y", "5", "B", "7", "H", "X", "R", "M", "4", "Z", "K", "E", "Q", "V", "F", "D", "A", "G", "6", "8" }; private static final String[] M6 = { "F", "P", "9", "S", "C", "B", "7", "T", "U", "E", "A", "M", "N", "K", "D", "R", "Z", "X", "H", "5", "W", "3", "V", "G", "2", "4", "J", "6", "Q", "Y", "8", "L" }; /** * 邀请码生成器 * @param id 大于等于1且小于等于32^6 * @return id相对应的6位32进制邀请码 */ public static final String generate(long id) { if (id < 1 || id > Math.pow(32, 6)) { throw new RuntimeException("生成邀请码失败>>参数值不在规定的范围内"); } int i1, i2, i3, i4, i5, i6; i1 = (int) ((id - 1) / Math.pow(32, 5)); i6 = (int) ((id - 1) % Math.pow(32, 5)); i2 = (int) (i6 / Math.pow(32, 4)); i6 = (int) (i6 % Math.pow(32, 4)); i3 = (int) (i6 / Math.pow(32, 3)); i6 = (int) (i6 % Math.pow(32, 3)); i4 = (int) (i6 / Math.pow(32, 2)); i6 = (int) (i6 % Math.pow(32, 2)); i5 = i6 / 32; i6 = i6 % 32; return M1[i1] + M2[i2] + M3[i3] + M4[i4] + M5[i5] + M6[i6]; } /** * 邀请码解析器 * @param code 6位32进制邀请码 * @return 邀请码对应的id */ public static final long parse(String code) { if (code.length() != 6) { throw new RuntimeException("解析验证码失败>>无效的邀请码"); } String[] arr = code.split(""); int i1, i2, i3, i4, i5, i6; i1 = Arrays.asList(M1).indexOf(arr[0]); i2 = Arrays.asList(M2).indexOf(arr[1]); i3 = Arrays.asList(M3).indexOf(arr[2]); i4 = Arrays.asList(M4).indexOf(arr[3]); i5 = Arrays.asList(M5).indexOf(arr[4]); i6 = Arrays.asList(M6).indexOf(arr[5]); if (i1 == -1 || i2 == -1 || i3 == -1 || i4 == -1 || i5 == -1 || i6 == -1) { throw new RuntimeException("解析验证码失败>>无效的邀请码"); } return (long) (i1 * Math.pow(32, 5) + i2 * Math.pow(32, 4) + i3 * Math.pow(32, 3) + i4 * Math.pow(32, 2) + i5 * 32 + i6 + 1); }}
1 0
- 邀请码工具类
- PHP 邀请码类
- 邀请码
- Dreamhost邀请码
- jhost邀请码
- JHost邀请码
- JHost 邀请码
- jhost邀请码
- JHOST邀请码
- jhost邀请码 最新
- 关于cl邀请码
- 最新 jhost 邀请码
- jHost邀请码
- jhost邀请码
- jhost邀请码
- Google+ 邀请码
- jhost 邀请码
- jhost 邀请码
- (2.3.12.1)正则校验字符串是否为数字
- UVA 541 Error Correction【水题】
- 利用quic协议访问google
- Android 高清加载巨图方案 拒绝压缩图片
- hdu_4823_Energy Conversion
- 邀请码工具类
- Oracle VM + centos7.1+openstack kilo 多结点安装教程---neutron的安装(3)
- 取消百度强力推荐
- Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)
- 【转】javascript中top、clientTop、scrollTop、offsetTop的讲解
- 一个复杂的堆排序程序
- 单例模式的七种写法, 面试题:线程安全的单例模式
- 装饰模式(Decorator)
- ZBrush中关于脸部雕刻的诀窍有哪些