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 ?
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 ?
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).
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()), '=');
}
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 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.