使用Groovy脚本生成随机的16位十六进制数

时间:2017-12-06 10:34:01

标签: groovy hex soapui

我正在尝试生成16位随机十六进制数。

import org.apache.commons.lang.RandomStringUtils;
def randomhex = RandomStringUtils.randomNumeric(16);
log.info randomhex
def result = Integer.toHexString(randomhex);
log.info result

预期:结果应为随机的16位十六进制数字。 例如:328A6D01F9FF12E0

实际: groovy.lang.MissingMethodException:没有方法签名:static java.lang.Integer.toHexString()适用于参数类型:(java.lang.String)values:[3912632387180714]可能的解决方案:toHexString(int),toString() ,toString(),toString(),toString(int),toString(int,int)错误行:9

1 个答案:

答案 0 :(得分:4)

需要64位来存储16位十六进制数,这大于Integer支持的数字。可以使用Long(在Java 8中添加toUnsignedString方法):

def result = Long.toUnsignedString(new Random().nextLong(), 16).toUpperCase()

另一种可能的方法是从0到16生成16个随机整数,并将结果连接成一个字符串。

def r = new Random()
def result = (0..<16).collect { r.nextInt(16) }
                     .collect { Integer.toString(it, 16).toUpperCase() }
                     .join()

另一种方法是利用随机UUID并从中获取最后16位数字。

def result = UUID.randomUUID()
                 .toString()
                 .split('-')[-1..-2]
                 .join()
                 .toUpperCase()