Java 示例 - 将 BigInteger 转换为 Byte Array 或 Byte Array 转换为 Biginteger教程

672 阅读1分钟

在这篇博文中,我们将通过实例来学习如何将字节数转换为大整数。

你也可以查看我之前关于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);  
 }  
}  

总结

综上所述,我们学会了如何将大整数转换成字节数组,以及将字节数组转换成大整数。