我正在尝试使用Groovy生成十六进制值,但有时会生成错误的HEX值。
Groovy代码:
def randomuserserial = Long.toUnsignedString(new Random().nextLong(), 16).toUpperCase()
log.info randomuserserial
例如:它生成' C9786B0146A68638'当我转换成十进制错误时显示'十六进制数必须小于7fffffffffffffff'
答案 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