BigInteger bx=new BigInteger("5888561920");
System.out.println("bx:"+bx);
byte x[]=new byte[5];
x=bx.toByteArray();
for(k=4;cnt<4;k--)
{
cnt++;
t[k-1]=x[k];
}
for(i=0;i<4;i++)
System.out.print(" "+t[i]);
System.out.println("\nbig: "+toInt(t));
Выход для вышеуказанного кода:
bx:5888561920
94 -4 83 0
big: 1593594624
Проблема здесь в том, что когда я преобразую большое целое число в байтовый массив и снова преобразовываю тот же байтовый массив в большое целое число, значения большого целого числа изменяются. Но когда я заменяю число «5888561920» на «2944280960» или «3806908688», нет проблем, я получаю тот же номер, что и вывод. В чем здесь проблема? Это проблема с BigInteger или "5888561920"
Я сам написал метод toInt:
public static BigInteger toInt(byte[] b){
String st=new String();
for(int k=3;k>=0;k--){
for(int i=0;i<8;i++)
{
if ((b[k] & 0x01) == 1)
{
st="1"+st;
}
else
{
st="0"+st;
}
b[k]= (byte) (b[k] >> 1);
}
}
BigInteger bi=new BigInteger(st,2);
return bi;
}