在Java或C中附加两个十六进制长值

时间:2012-05-14 15:50:09

标签: java c hex append

我在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

2 个答案:

答案 0 :(得分:4)

我假设您的代码看起来像这样:

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

,您需要0x6a09e667bb67ae85的输出。

您可以通过一些位移来完成此操作,例如:

long result = hex2 | (hex1 << 32);

答案 1 :(得分:1)

0x6a09e667 + 0xbb67ae85提供的0x6a09e6670xbb67ae85无效。请尝试使用此代码:

String temp = h[0] + h[1].substring( 2 ); // Strip "0x" from second string