二、 代码编写
private static String compressUUID(UUID uuid) {
StringBuilder resultBuilder = new StringBuilder();
String uuidStr = uuid.toString();
boolean isFirst = false;
int tmp = 0;
for (int i = 0; i < 36; i++) {
if (i == 8 || i == 13 || i == 18 || i == 23) {
continue;
}
char c = uuidStr.charAt(i);
short shortValue = Short.valueOf(String.valueOf(c), 16);
if (!isFirst) {
tmp += shortValue;
isFirst = true;
} else {
tmp = tmp << 4;
tmp += shortValue;
resultBuilder.append((char) tmp);
tmp = 0;
isFirst = false;
}
}
return resultBuilder.toString();
}
代码相对比较简单。
for循环一遍,如果遇到-则跳过。
然后把char转换成short,把第一个字符放到short的高四位,把第二个字符放在short的低四位,然后把这个short转成char。
最后拼接成一个字符串。
三、 问题
这样压缩后,能够在代码中正常使用,但是对人来说可读性太差了,如果你打印的话,可能还显示不出来,这一点不是特别好。
大家看还有没有更好的解决方法,一起来讨论下。