public static String UU16FromUU64(String uu64) {
        byte[] bytes = new byte[32];
        char[] cs = uu64.toCharArray();
        int index = 0;
        // 每次取2个字符，恢复成3个byte，重复10次，
        for (int i = 0; i < 10; i++) {
            int off = i * 2;
            char cl = cs[off];
            char cr = cs[off + 1];
            int l = Arrays.binarySearch(_UU64, cl);
            int r = Arrays.binarySearch(_UU64, cr);
            int n = (l << 6) | r;
            bytes[index++] = (byte) ((n & 0xF00) >>> 8);
            bytes[index++] = (byte) ((n & 0xF0) >>> 4);
            bytes[index++] = (byte) (n & 0xF);
        }
        // 最后一次，是用最后2个字符，恢复回2个byte
        char cl = cs[20];
        char cr = cs[21];
        int l = Arrays.binarySearch(_UU64, cl);
        int r = Arrays.binarySearch(_UU64, cr);
        int n = (l << 2) | r;
        bytes[index++] = (byte) ((n & 0xF0) >>> 4);
        bytes[index++] = (byte) (n & 0xF);

        // 返回 UUID 对象
        char[] names = new char[32];
        for (int i = 0; i < bytes.length; i++)
            names[i] = _UU16[bytes[i]];
        return new String(names);
    }
public static String UU16FromUU64(String uu64) {
        byte[] bytes = new byte[32];
        char[] cs = uu64.toCharArray();
        int index = 0;
        
        for (int i = 0; i < 10; i++) {
            int off = i * 2;
            char cl = cs[off];
            char cr = cs[off + 1];
            int l = Arrays.binarySearch(_UU64, cl);
            int r = Arrays.binarySearch(_UU64, cr);
            int n = (l << 6) | r;
            bytes[index++] = (byte) ((n & 0xF00) >>> 8);
            bytes[index++] = (byte) ((n & 0xF0) >>> 4);
            bytes[index++] = (byte) (n & 0xF);
        }
        
        char cl = cs[20];
        char cr = cs[21];
        int l = Arrays.binarySearch(_UU64, cl);
        int r = Arrays.binarySearch(_UU64, cr);
        int n = (l << 2) | r;
        bytes[index++] = (byte) ((n & 0xF0) >>> 4);
        bytes[index++] = (byte) (n & 0xF);

        
        char[] names = new char[32];
        for (int i = 0; i < bytes.length; i++)
            names[i] = _UU16[bytes[i]];
        return new String(names);
    }
public static String UU16FromUU64 ( String uu64 ) { byte [ ] bytes = new byte [ 32 ] ; char [ ] cs = uu64 . toCharArray ( ) ; int index = 0 ; // 每次取2个字符，恢复成3个byte，重复10次，
 for ( int i = 0 ; i < 10 ; i ++ ) { int off = i * 2 ; char cl = cs [ off ] ; char cr = cs [ off + 1 ] ; int l = Arrays . binarySearch ( _UU64 , cl ) ; int r = Arrays . binarySearch ( _UU64 , cr ) ; int n = ( l << 6 ) | r ; bytes [ index ++ ] = ( byte ) ( ( n & 0xF00 ) >>> 8 ) ; bytes [ index ++ ] = ( byte ) ( ( n & 0xF0 ) >>> 4 ) ; bytes [ index ++ ] = ( byte ) ( n & 0xF ) ; } // 最后一次，是用最后2个字符，恢复回2个byte
 char cl = cs [ 20 ] ; char cr = cs [ 21 ] ; int l = Arrays . binarySearch ( _UU64 , cl ) ; int r = Arrays . binarySearch ( _UU64 , cr ) ; int n = ( l << 2 ) | r ; bytes [ index ++ ] = ( byte ) ( ( n & 0xF0 ) >>> 4 ) ; bytes [ index ++ ] = ( byte ) ( n & 0xF ) ; // 返回 UUID 对象
 char [ ] names = new char [ 32 ] ; for ( int i = 0 ; i < bytes . length ; i ++ ) names [ i ] = _UU16 [ bytes [ i ] ] ; return new String ( names ) ; }
将一个 UU64 表示的紧凑字符串，变成 UU16 表示的字符串

<pre>
每次取2个字符，恢复成3个byte，重复10次， 最后一次，是用最后2个字符，恢复回2个byte </prev>

@param uu64
uu64 64进制表示的 UUID, 内容为 [\\-0-9a-zA-Z_]
@return 16进制表示的紧凑格式的 UUID
将一个 UU64 表示的紧凑字符串，变成 UU16 表示的字符串