1. 程式人生 > >為什麽UUID.randomUUID()表示一個128位的值

為什麽UUID.randomUUID()表示一個128位的值

ava 二進制 說明 16進制 ffffff int system 為什麽 打印

我們在代碼中使用UUID生成唯一標識符:

import java.util.UUID;

/**
 * Created by lay on 18/02/2018.
 */
public class test {

    public static void main(String[] args) {
        System.out.println(UUID.randomUUID());;
    }
}

打印:

04f04c46-d2b2-4699-bc4d-91168cd9e5a4

我們看到了36個字符,和API文檔裏面描述的128位的值不符。

拋去固定的4個“-”,一共32個字符。

API文檔中並未直接說明這一串唯一標識符是16進制,但其描述這個字符串的組成時各個部分其實都是16進制:

例如描述最高有效位:

 0xFFFFFFFF00000000 time_low
 0x00000000FFFF0000 time_mid
 0x000000000000F000 version
 0x0000000000000FFF time_hi

那麽既然它是表示16進制的話,我們就需要看看它等於多少位二進制:

2個16進制 = 8位二進制

32個16進制 = 128位二進制

所以UUID表示128位二進制或者32位字符的唯一標識符

UUID由128位組成,那麽組合的種類就是有限個,所以對於UUID作為唯一標識符不是永遠不會重復,而是重復的概率非常的低

為什麽UUID.randomUUID()表示一個128位的值