在这篇博文中,我们将通过实例来学习如何将字节数转换为大整数。
你也可以查看我之前关于java中BigInteger类的文章
BigInteger实例
ByteArray 是一个字节数组。每个字节是8比特的二进制数据。
BigInteger 是一个在 java.math包中声明的java类。
BigInteger和字节数组之间没有自动转换,就像这样。
在Java中,我们曾经有过这样的用例,我们需要将Biginteger数据转换成其字节数组的数据。每个比特代表的值是1或0都是不同的类,有不同的行为。
如何在java中把BigInteger转换为字节数组?
BigInteger 类中有toByteArray() 方法,该方法返回大整数的字节数组,该字节数组等同于比特整数值的二补表示。
语法:
public byte[] toByteArray()
该方法返回大整数的字节数组值的二补表示。返回的字节数组顺序如下:big-endian byte order 。
import java.math.BigInteger;
import java.util.Arrays;
public class BigIntegerToByteArrayExample {
public static void main(String[] args) {
byte[] bytes = new byte[] { 0x1, 0x20, 0x11 };
BigInteger bigInteger = new BigInteger(bytes);
byte byteArray[] = bigInteger.toByteArray();
System.out.println(Arrays.toString(byteArray));
}
}
如何将字节数组转换为BigInteger?
BigInteger 有一个构造函数,我们可以向它提供字节数组。
public BigInteger(byte[] val)
将字节数组的二进制补码转换为BigInteger 。
import java.math.BigInteger;
public class BigIntegerToByteArrayExample {
public static void main(String[] args) {
// Negative number
byte[] bytes = new byte[] {(byte) 0xFF, 0x20, 0x11 };
BigInteger bigInteger = new BigInteger(bytes);
System.out.println(bigInteger);
// Positive number
byte[] bytes1 = new byte[] {0x1, 0x20, 0x11 };
BigInteger bigInteger1 = new BigInteger(bytes1);
System.out.println(bigInteger1);
}
}
总结
综上所述,我们学会了如何将大整数转换成字节数组,以及将字节数组转换成大整数。