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