2014-11-04 7 views

Odpowiedz

6

Wikipedia says:

Wersja 4 UUID używać schematu polegając tylko na liczb losowych. Algorytm ten ustawia numer wersji (4 bity) oraz dwa zarezerwowane bity. Wszystkie inne bity (pozostałe 122 bity) są ustawiane przy użyciu losowego lub pseudolosowego źródła danych.

wersja 4 UUID mają postać XXXXXXXXXXXX-4XXX-yxxx-XXXXXXXXXXXX gdzie X oznacza dowolny szesnastkowym cyfrowy, a y jest 8, 9, A, lub B

Zatem pierwszy bit najmniej znacząca połowa będzie zawsze równa 1, co spowoduje, że będzie to liczba ujemna.

+0

Dzięki. To ma dla mnie sens. BTW, wszelkie sugestie, w jaki sposób wygenerować unikalną długą wartość? – Kai

+0

@Kai To osobne pytanie (i pytanie zadane wcześniej na tej stronie). – yshavit

+0

Co powiesz na SecureRandom # nextLong? – Thilo

1

ten może być również przydatna do wykazania czego oczekiwać od getLeastSignificantBits():

/** 
* @see UUID#getLeastSignificantBits() 
*/ 
public void test_getLeastSignificantBits() { 
    UUID uuid = new UUID(0, 0); 
    assertEquals(0, uuid.getLeastSignificantBits()); 
    uuid = new UUID(0, Long.MIN_VALUE); 
    assertEquals(Long.MIN_VALUE, uuid.getLeastSignificantBits()); 
    uuid = new UUID(0, Long.MAX_VALUE); 
    assertEquals(Long.MAX_VALUE, uuid.getLeastSignificantBits()); 
} 

source