如何在 Clojure/Java 中将十六进制字符串(例如 SHA256 摘要)转换为长字符串?
这导致java.lang.NumberFormatException
:
(Long/parseLong "4590d31a9cf5eb30997501f82b1b8db051c01f7ea8a2c413343f2c1b9f5aa04e" 16)
这有效,产生一个 BigInteger:
(BigInteger. "4590d31a9cf5eb30997501f82b1b8db051c01f7ea8a2c413343f2c1b9f5aa04e" 16)
正如乔恩在上面指出的那样,如果我需要很长时间,那将是一种有损的转换。
Along
只有 64 位。SHA-256 摘要有 256 位(因此得名)。所以不,您不能(可逆地)执行该转换。
如果您只想要(比如说)底部的 64 位,您可以获取最后 16 个十六进制数字并对其进行解析,或者您可以将整个内容转换为字节数组并将该数组中的 8 个字节转换为长整数。
如果你想要整数,你应该考虑BigInteger
。Java 中的原始类型都不能处理 256 位。