為什麽UUID.randomUUID()表示一個128位的值
阿新 • • 發佈:2018-02-18
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位的值