1

如何在 Clojure/Java 中将十六进制字符串(例如 SHA256 摘要)转换为长字符串?

这导致java.lang.NumberFormatException

(Long/parseLong "4590d31a9cf5eb30997501f82b1b8db051c01f7ea8a2c413343f2c1b9f5aa04e" 16)
4

2 回答 2

4

这有效,产生一个 BigInteger:

(BigInteger. "4590d31a9cf5eb30997501f82b1b8db051c01f7ea8a2c413343f2c1b9f5aa04e" 16)

正如乔恩在上面指出的那样,如果我需要很长时间,那将是一种有损的转换。

于 2013-09-12T06:26:40.330 回答
3

Along只有 64 位。SHA-256 摘要有 256 位(因此得名)。所以不,您不能(可逆地)执行该转换。

如果您只想要(比如说)底部的 64 位,您可以获取最后 16 个十六进制数字并对其进行解析,或者您可以将整个内容转换为字节数组并将该数组中的 8 个字节转换为长整数。

如果你想要整数,你应该考虑BigInteger。Java 中的原始类型都不能处理 256 位。

于 2013-09-12T06:23:01.500 回答