使用Groovy生成十六进制值

时间:2017-12-14 07:26:22

标签: groovy hex soapui

我正在尝试使用Groovy生成十六进制值,但有时会生成错误的HEX值。

Groovy代码:

def randomuserserial = Long.toUnsignedString(new Random().nextLong(), 16).toUpperCase()
log.info randomuserserial

例如:它生成' C9786B0146A68638'当我转换成十进制错误时显示'十六进制数必须小于7fffffffffffffff'

1 个答案:

答案 0 :(得分:2)

但此转换器只接受低于7fffffffffffffff

的十六进制数字

这意味着它只接受正十进制数或零

你可以使用abs()方法在转换为十六进制字符串之前将负数转换为正数

Long.toUnsignedString(new Random().nextLong().abs(), 16).toUpperCase()

另一方面,java / groovy中的十六进制解析器可以解析大于7fffffffffffffff的数字:

def s='C9786B0146A68638'
def i = Long.parseUnsignedLong(s, 16)
println i