使用 Groovy 生成十六进制值

Generate Hexadecimal value using Groovy

我正在尝试使用 Groovy 生成十六进制值,但有时它会生成不正确的十六进制值。

Groovy代码:

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

例如:它生成 'C9786B0146A68638' 并且当我转换为十进制错误时显示 'Hex number must be smaller then 7fffffffffffffff'

但是这个转换器只接受小于 7fffffffffffffff

的十六进制数

表示它只接受正十进制数或零

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

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

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

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