我正在用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
当我说append时,我的意思是:0x6a09e667+0xbb67ae85=0x6a09e667bb67ae85
最佳答案
我想你的代码应该是这样的:
long hex1 = 0x6a09e667;
long hex2 = 0xbb67ae85;
你需要
0x6a09e667bb67ae85
的输出。您可以通过一些位移位来完成此操作,例如:
long result = hex2 | (hex1 << 32);