在Java中将字符串UUID转换为BigInteger

4

我想将作为字符串传入的UUID转换为大整数,但每次都会出现数字格式异常,因为它需要以字符串十进制形式作为参数。有什么方法可以实现这一点。

String x = "6CFAFD0DA976088FE05400144FFB4B37";

我也试过使用基数,但输出结果不同。

BigInteger big = new BigInteger(x, 0);

System.out.println(big);

任何帮助都会受到欢迎,谢谢!


只需设置正确的基数,它就能工作。 - XtremeBaumer
看起来像是一个由十六进制字符组成的字符串。那么您应该使用 16 进制。 - MC Emperor
2
我想知道为什么你将其处理为 BigInteger 而不是 java.util.UUID - Henry
@Henry可能会把它称为UUID,但字符串值并不是那个格式。 :) - akash
2个回答

13

由于您的字符串包含数字和 A-F 的字母数字值,因此应该使用 基数 16,将基数值设置为 16,因为您的字符串是十六进制的。

String x = "6CFAFD0DA976088FE05400144FFB4B37";
BigInteger big = new BigInteger(x, 16);
System.out.println(big);

输出

144859830291446118078300087367740640055

1
请注意,基数必须至少为16才能处理它,但可以高达36。 - XtremeBaumer
@XtremeBaumer 我同意。 - akash

5

您需要将radix值设置为16。

对于十六进制字符串,您需要将基数值定义为16


可以再多解释一点吗? - Rudy Velthuis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接