1

Clojure/Java で 16 進文字列 (SHA256 ダイジェストなど) を long に変換するにはどうすればよいですか?

これにより、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 桁の 16 進数を取得して解析するか、全体をバイト配列に変換して、その配列から 8 バイトを long に変換することができます。

整数が必要な場合は、BigInteger代わりに検討する必要があります。Java のどのプリミティブ型も 256 ビットを処理しません。

于 2013-09-12T06:23:01.500 に答える