如何在Java中将byte []转换为POSITIVE BigInteger?

时间:2011-07-21 17:47:55

标签: java math binary

我正与另一个在C中工作的团队合作。我们与之通信的协议以byte []格式发送IP地址,以及2个“掩码”值,即字节[8]。我想将IP地址用作BigInteger,以便我可以进行比较以查看IP地址是否在2个其他IP地址之间。为了确保签名不会搞砸我,我需要一种方法将IP从字节[](IPv4的4字节或IPv6的16字节)转换为BigInteger中的正值。有人可以指点我参考或建议一种实现这个目标的方法吗?

3 个答案:

答案 0 :(得分:13)

Java有一个BigInteger构造函数,它采用符号整数和字节数组。所以你可以这样做:

BigInteger ip = new BigInteger(1, ipBytes);

请参阅此处的文档: BigInteger(int, byte[])

答案 1 :(得分:11)

只需使用接受字节数组和参数的constructor来判断它是正还是负。

答案 2 :(得分:2)

正如其他人已经注意到BigInteger构造函数应该没问题。值得注意的一点是JVM是大端的,所以只要确保你传入的字节数组也是如此。如果你从套接字中获取字节,你不应该做任何事情,因为网络字节顺序也是大端,但如果你在像x86硬件这样的小端机器上运行并通过数据获取数据,则可能会出现问题其他一些手段。