tyr*_*yro 2 java hex long-integer
我在应用程序中有一个场景,我需要生成一个ID,它应该是十六进制表示的随机64位值,
到目前为止我做了什么,
Random randomLong = new Random();
long m = randomLong.nextLong();
String uid = Long.toHexString(m);
Run Code Online (Sandbox Code Playgroud)
o/p可能像43c45c243f90326a或82cf8e3863102f3a等.但不是每次它给16个字符,但15个字符而不是我得到原因:(
获取包含16个字符的十六进制表示中的随机64位值的最有效方法是什么
使用String.format()
long value=123L;
String uid = String.format("%016x", value);
// 000000000000007b
Run Code Online (Sandbox Code Playgroud)
一句解释:
每个十六进制数字代表4位.64位长可以用16(64/4)个十六进制字符表示.要包含前导零,您需要16个十六进制数字.所以你的格式说明符是%016x.基本上,%x对于通过016用零插入左边的垫来修改的十六进制来实现最小宽度为16个字符.