我在Android应用中有一个场景,其中必须使用6位数生成随机十六进制值。 (值的范围可以是十六进制或整数值。)
最有效的方法是什么? 我是否必须生成随机十进制数,然后将其转换为十六进制?要么 可以直接生成一个值吗?
答案 0 :(得分:4)
String zeros = "000000";
Random rnd = new Random();
String s = Integer.toString(rnd.nextInt(0X1000000), 16);
s = zeros.substring(s.length()) + s;
System.out.println("s = " + s);
答案 1 :(得分:3)
您可以在程序中使用十六进制文字,与十进制文字相同。十六进制文字以0x
为前缀。您的最大值为FFFFFF
,因此在您的程序中,您可以编写
int maxValue = 0xFFFFFF;
然后你需要在该范围内生成随机数。像往常一样使用Random
课程。
Random r = new Random();
int myValue = r.nextInt(maxValue + 1);
请注意使用maxValue + 1
,因为nextInt()
的上限是独占的。
最后一步是打印出你的十六进制值。
System.out.printf("%06X", myValue);
答案 2 :(得分:1)
SecureRandom random = new SecureRandom();
int num = random.nextInt(1000000);
String formatted = String.format("%05d", num);
System.out.println(formatted);
代码说明
此随机对象使用SecureRandom Class方法。此类用于生成随机数。
SecureRandom random = new SecureRandom();
next int num object store 6位随机数
int num = random.nextInt(1000000);