zoukankan      html  css  js  c++  java
  • 生成短的uuid

    package test1;
    
    import java.util.Random;
    import java.util.UUID;
    public class ShareCodeUtil {
    	private static final char[] r=new char[]{'q', 'w', 'e', '8', 'a', 's', '2', 'd', 'z', 
    			'x', '9', 'c', '7', 'p', '5', 'i', 'k', '3', 'm', 'j', 'u', 'f', 'r', '4', 'v', 
    			'y', 'l', 't', 'n', '6', 'b', 'g', 'h'};
    	private static final char b='o';
    	private static final int binLen=r.length;
    	private static final int s=6;
    	public static String toSerialCode(long id) {
            char[] buf=new char[32];
            int charPos=32;
            while((id / binLen) > 0) {
                int ind=(int)(id % binLen);
                // System.out.println(num + "-->" + ind);
                buf[--charPos]=r[ind];
                id /= binLen;
            }
            buf[--charPos]=r[(int)(id % binLen)];
            // System.out.println(num + "-->" + num % binLen);
            String str=new String(buf, charPos, (32 - charPos));
            // 不够长度的自动随机补全
            if(str.length() < s) {
                StringBuilder sb=new StringBuilder();
                sb.append(b);
                Random rnd=new Random();
                for(int i=1; i < s - str.length(); i++) {
                sb.append(r[rnd.nextInt(binLen)]);
                }
                str+=sb.toString();
            }
            return str;
        }
     
        public static long codeToId(String code) {
            char chs[]=code.toCharArray();
            long res=0L;
            for(int i=0; i < chs.length; i++) {
                int ind=0;
                for(int j=0; j < binLen; j++) {
                    if(chs[i] == r[j]) {
                        ind=j;
                        break;
                    }
                }
                if(chs[i] == b) {
                    break;
                }
                if(i > 0) {
                    res=res * binLen + ind;
                } else {
                    res=ind;
                }
                // System.out.println(ind + "-->" + res);
            }
            return res;
        }
        public static String[] chars = new String[] { "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", "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" };
        public static String generateShortUuid() {
            StringBuffer shortBuffer = new StringBuffer();
            String uuid = UUID.randomUUID().toString().replace("-", "");
            for (int i = 0; i < 8; i++) {
                String str = uuid.substring(i * 4, i * 4 + 4);
                int x = Integer.parseInt(str, 16);
                shortBuffer.append(chars[x % 0x3E]);
            }
            return shortBuffer.toString();
    
        }
        
        public static void main(String[] args) {
        	
        	System.out.println(generateShortUuid());
    	}
    }
    

      

  • 相关阅读:
    学习第23天
    学习第22天
    学习第21天
    Servlet交互与JSP
    Cookie与Session
    servlet入门
    网络编程
    DOM4j
    xml文档对象模型doc
    反射
  • 原文地址:https://www.cnblogs.com/ipetergo/p/7086774.html
Copyright © 2011-2022 走看看