我嘗試下面的代碼:如何從基地32字符串解碼爲BigInteger
import java.math.BigInteger;
import org.apache.commons.codec.binary.Base32;
import org.junit.Test;
public class Sandbox
{
@Test
public void testSomething() {
String sInput = "GIYTINZUHAZTMNBX";
BigInteger bb = new BigInteger(new Base32().decode(sInput));
System.out.println("number = " + bb);
}
}
和繼承人的輸出:
number = 237025977136523702055991
使用this website to convert between base 32我得到不同的結果比實際輸出。繼承人我期待看到的結果基於我從網站上得到的結果:
expected output = 2147483647
任何想法爲什麼會發生這種情況?
編輯:
原諒我使其混亂通過故意試圖轉換2^31-1。
使用轉換網站,我掛早些時候,我改變了輸入:
String sInput = "GE4DE===";
預期輸出:
number = 182
實際輸出:
number = 3225650
該網站吐出2^31-1,所以我高度懷疑他們在內部做32位有符號數學,當然溢出。沒有實際計算任何東西,我會說你得到的結果看起來更像是一個合理的結果比2^31-1 – fvu
不是一個真正的問題。您發佈的任何字符串都不是以base-32爲基數。最後一個看起來像base-64。 – EJP