1

我正在用 Java 实现 SHA-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 回答