90 votes

Génération d'UUID à 8 caractères uniquement

Les bibliothèques UUID génèrent des UUID de 32 caractères.

Je souhaite générer des UUID à 8 caractères uniquement, est-ce possible ?

75voto

Cephalopod Points 4927

Ce n'est pas possible car un UUID est un nombre de 16 octets par définition. Mais bien sûr, vous pouvez générer des chaînes uniques de 8 caractères (voir les autres réponses).

Faites également attention à la génération d'UUID plus longs et à leur sous-chaîne, car certaines parties de l'ID peuvent contenir des octets fixes (c'est par exemple le cas avec les UUID MAC, DCE et MD5).

8voto

bstick12 Points 1049

Comme @Cephalopod l'a déclaré, ce n'est pas possible mais vous pouvez raccourcir un UUID à 22 caractères

 public static String encodeUUIDBase64(UUID uuid) {
        ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
        bb.putLong(uuid.getMostSignificantBits());
        bb.putLong(uuid.getLeastSignificantBits());
        return StringUtils.trimTrailingCharacter(BaseEncoding.base64Url().encode(bb.array()), '=');
}

3voto

sanghoon2 Points 79

Celui-ci, ça va? En fait, ce code renvoie 13 caractères maximum, mais il est plus court que l'UUID.

 import java.nio.ByteBuffer;
import java.util.UUID;

/**
 * Generate short UUID (13 characters)
 * 
 * @return short UUID
 */
public static String shortUUID() {
  UUID uuid = UUID.randomUUID();
  long l = ByteBuffer.wrap(uuid.toString().getBytes()).getLong();
  return Long.toString(l, Character.MAX_RADIX);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X