java中两个正数加负数

问题描述 投票:0回答:1

我正在尝试用java编写MD5哈希算法,但我目前陷入了模加法的部分,因为我需要将许多值放在一起。问题是,在一次计算中,两个正整数给我一个负值。 这部分的计算公式如下(如果我没理解错的话):

X = A set value (Here 01234567)

Y = 4275878552

Kx = abs(sin(x + 1)) + 2^32 -> K1 = 2147483647

Calc1 = (x + y) % 100000000 -> 58746041

Calc2 = (SetValue + calc1) % 100000000 -> 37294613

Calc3 = (K1 + calc2) % 100000000 -> ?

(格式有点奇怪,所以中间有空行)

但是 K1 + calc2 给我 -2110189036,尽管两个值都是正数,但它会导致负值 -2110189036

这是我的代码:

String x = abcd[0];
String y = fghi[0];

String output1 = String.valueOf((hexToInt(x) + hexToInt(y)) % 100000000);
String output2 = String.valueOf(
    (bitToInt(String.valueOf(roundsM[0])) + Integer.parseInt(output1, 10)) % 100000000);
String output3 = String.valueOf((k(1) + Integer.parseInt(output2, 10)) % 100000000);

我知道我将它们存储为字符串,然后将它们转换,但是转换方法

hexToInt
bitToInt
工作得很好,我这样做是因为我不确定数字有多大,以后可能需要它们作为字符串

我感谢任何帮助

java md5
1个回答
0
投票

我已经通过将其转换为长整数解决了这个问题。现在可以了。感谢您的帮助

© www.soinside.com 2019 - 2024. All rights reserved.