Saltar al contenido

cómo reducir la longitud del UUID generado usando randomUUID ()

Solución:

Si no necesita que sea único, puede usar la longitud que desee.

Por ejemplo, puedes hacer esto.

Random rand = new Random();
char[] chars = new char[16];
for(int i=0;i<chars.length;i++) {
    chars[i] = (char) rand.nextInt(65536);
    if (!Character.isValidCodePoint(chars[i]))
        i--;
}
String s = new String(chars);

Esto le dará casi el mismo grado de aleatoriedad pero utilizará todos los caracteres posibles entre u0000 y ufffd

Si necesita caracteres ASCII imprimibles, puede hacerlo tan corto como desee, pero la probabilidad de unicidad disminuye significativamente. Lo que puedo hacer es usar la base 36 en lugar de la base 16

UUID uuid = UUID.randomUUID();
String s = Long.toString(uuid.getMostSignificantBits(), 36) + '-' + Long.toString(uuid.getLeastSignificantBits(), 36);

Esto tendrá un promedio de 26 caracteres, como máximo 27 caracteres.

Puede utilizar la codificación base64 y reducirla a 22 caracteres.

Si usa base94, puede obtenerlo hasta 20 caracteres.

Si usa todo el rango de caracteres válidos de u0000 a ufffd, puede reducirlo a solo 9 caracteres o 17 bytes.

Si no le importan las cadenas, puede usar 16 bytes de 8 bits.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *