1

Java で SHA-2 アルゴリズムを実装しています。しかし、私は問題に遭遇しました。2 つの 16 進数値を 1 つに追加する必要がありますが、それができません。2つを文字列として追加して使用しようとしLong.parseLong(appendedString)ましたが、数値形式の例外が発生します。とにかくJavaでこれを行うことができますか? そうでない場合は、Cでこれを行う方法はありますか?Cで実装しますか? 読んでくれてありがとう。

コードは次のとおりです。

    String temp = h[0] + "" + h[1]; //Where h[0] and h[1] are two hex values stored as Long
    //I also tried String temp = String.valueOf(h[0]) + String.valueOf(h[1]); but no dice
    Long appended = Long.parseLong(temp); //Number format exception here

追加と言うときは、次のような意味です: 0x6a09e667 + 0xbb67ae85 = 0x6a09e667bb67ae85

4

2 に答える 2

4

あなたのコードは次のようになっていると思います:

long hex1 = 0x6a09e667;
long hex2 = 0xbb67ae85;

の出力が必要です0x6a09e667bb67ae85

これは、次のようなビットシフトで行うことができます。

long result = hex2 | (hex1 << 32);
于 2012-05-14T15:55:45.993 に答える
1

0x6a09e667 + 0xbb67ae85どちらが0x6a09e6670xbb67ae85有効ではないかを示します。代わりに次のコードを試してください。

String temp = h[0] + h[1].substring( 2 ); // Strip "0x" from second string
于 2012-05-14T15:57:32.197 に答える