Java的UUID类生成随机UUID.但这包括字母和数字.对于某些应用,我们只需要数字.有没有办法生成只包含Java中的数字的随机UUID?
UUID.randomUUID();
Run Code Online (Sandbox Code Playgroud)
Chr*_*ibl 20
如果您不想要随机数,但只使用带数字的UUID:
String lUUID = String.format("%040d", new BigInteger(UUID.randomUUID().toString().replace("-", ""), 16));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,左边填充到40个零...
结果:
UUID:b55081fa-9cd1-48c2-95d4-efe2db322a54
in:
UUID:0241008287272164729465721528295504357972
UUID uuid = UUID.randomUUID();
String numericUUID = Long.toString(uuid.getMostSignificantBits())
+ Long.toString(uuid.getLeastSignificantBits());
Run Code Online (Sandbox Code Playgroud)
虽然这个问题的原始海报将@Jigar Joshi的问题标记为最佳答案,但我想补充一点,在某些情况下使用UUID而不是随机数是有理由的.不同之处在于UUID(通用)是唯一的(因此名称),而随机数则不是.这只是一个概率问题,在生成随机数时你是否会获得相同的数字两次甚至更多,但UUID不会发生这种情况.因此,我认为@Chris Eibl的答案是最好的.
作为记录:UUID实际上是128位数字。
您看到的字母数字字符串是使用十六进制数字(0..9A..F)表示的128位数字。
真正的解决方案是将字符串转换为相应的128位数字。要存储,您需要两个Long(Long有64位)。
| 归档时间: |
|
| 查看次数: |
15851 次 |
| 最近记录: |