134 lines
3.8 KiB
Java
134 lines
3.8 KiB
Java
package com.ag.util;
|
|
|
|
import java.util.UUID;
|
|
|
|
/**
|
|
* Created by Administrator on 2017/3/29 0029.
|
|
*/
|
|
public class UUIDUtil {
|
|
public UUIDUtil() {
|
|
}
|
|
|
|
/**
|
|
* ????UUID
|
|
*
|
|
* @return String UUID
|
|
*/
|
|
public static String getUUID() {
|
|
return UUID.randomUUID().toString().replaceAll("-","");
|
|
}
|
|
|
|
/**
|
|
* ???????UUID
|
|
*
|
|
* @param number
|
|
* int ?????UUID??
|
|
* @return String[] UUID??
|
|
*/
|
|
public static String[] getUUID(int number) {
|
|
if (number < 1) {
|
|
return null;
|
|
}
|
|
String[] ss = new String[number];
|
|
for (int i = 0; i < number; i++) {
|
|
ss[i] = getUUID();
|
|
}
|
|
return ss;
|
|
}
|
|
|
|
/**
|
|
* ????????base64??
|
|
*/
|
|
public static char[] encode(byte[] data) {
|
|
char[] out = new char[((data.length + 2) / 3) * 4];
|
|
for (int i = 0, index = 0; i < data.length; i += 3, index += 4) {
|
|
boolean quad = false;
|
|
boolean trip = false;
|
|
int val = (0xFF & (int) data[i]);
|
|
val <<= 8;
|
|
if ((i + 1) < data.length) {
|
|
val |= (0xFF & (int) data[i + 1]);
|
|
trip = true;
|
|
}
|
|
val <<= 8;
|
|
if ((i + 2) < data.length) {
|
|
val |= (0xFF & (int) data[i + 2]);
|
|
quad = true;
|
|
}
|
|
out[index + 3] = alphabet[(quad ? (val & 0x3F) : 64)];
|
|
val >>= 6;
|
|
out[index + 2] = alphabet[(trip ? (val & 0x3F) : 64)];
|
|
val >>= 6;
|
|
out[index + 1] = alphabet[val & 0x3F];
|
|
val >>= 6;
|
|
out[index + 0] = alphabet[val & 0x3F];
|
|
}
|
|
return out;
|
|
}
|
|
/**
|
|
* ?base64????????????
|
|
*/
|
|
public static byte[] decode(char[] data) {
|
|
int len = ((data.length + 3) / 4) * 3;
|
|
if (data.length > 0 && data[data.length - 1] == '=')
|
|
--len;
|
|
if (data.length > 1 && data[data.length - 2] == '=')
|
|
--len;
|
|
byte[] out = new byte[len];
|
|
int shift = 0;
|
|
int accum = 0;
|
|
int index = 0;
|
|
for (int ix = 0; ix < data.length; ix++) {
|
|
int value = codes[data[ix] & 0xFF];
|
|
if (value >= 0) {
|
|
accum <<= 6;
|
|
shift += 6;
|
|
accum |= value;
|
|
if (shift >= 8) {
|
|
shift -= 8;
|
|
out[index++] = (byte) ((accum >> shift) & 0xff);
|
|
}
|
|
}
|
|
}
|
|
if (index != out.length)
|
|
throw new Error("miscalculated data length!");
|
|
return out;
|
|
}
|
|
static private char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
|
.toCharArray();
|
|
static private byte[] codes = new byte[256];
|
|
static {
|
|
for (int i = 0; i < 256; i++)
|
|
codes[i] = -1;
|
|
for (int i = 'A'; i <= 'Z'; i++)
|
|
codes[i] = (byte) (i - 'A');
|
|
for (int i = 'a'; i <= 'z'; i++)
|
|
codes[i] = (byte) (26 + i - 'a');
|
|
for (int i = '0'; i <= '9'; i++)
|
|
codes[i] = (byte) (52 + i - '0');
|
|
codes['+'] = 62;
|
|
codes['/'] = 63;
|
|
}
|
|
public static void main(String[] args) throws Exception {
|
|
// ???base64
|
|
/*String strSrc = "ios";
|
|
String strOut = new String(UUIDUtil.encode(strSrc.getBytes("UTF-8")));
|
|
System.out.println(strOut);
|
|
String strOut2 = new String(UUIDUtil.decode(strOut.toCharArray()),
|
|
"UTF-8");
|
|
System.out.println(strOut2);*/
|
|
long on = System.nanoTime();
|
|
long on1 = System.currentTimeMillis();
|
|
System.out.println(UUIDUtil.getUUID());
|
|
long end = System.nanoTime();
|
|
long end1 = System.currentTimeMillis();
|
|
|
|
|
|
System.out.println(end - on);
|
|
System.out.println(end1 - on1);
|
|
|
|
}
|
|
|
|
}
|
|
|