作为我正在编写的程序的一部分,我需要将两个字节合并为一个字节数组中的一个 long 。所以假设这个:
byte a[] = new byte[2]
a[0] = 0b1000111
a[1] = 0b1111000
我怎样才能巩固它们
long b = 0b10001111111000
编辑:该程序将尝试合并 2 字节到 100 之间的任何位置,仅供参考。
作为我正在编写的程序的一部分,我需要将两个字节合并为一个字节数组中的一个 long 。所以假设这个:
byte a[] = new byte[2]
a[0] = 0b1000111
a[1] = 0b1111000
我怎样才能巩固它们
long b = 0b10001111111000
编辑:该程序将尝试合并 2 字节到 100 之间的任何位置,仅供参考。
为了组合这两个字节,您只需要 16 位。一个简短的就足够了:
short result = (short)(((a[0] & 0xff) << 8) | (a[1] & 0xff))
如果由于某种原因,您需要long
数据类型,则只需将强制转换替换为 long。
java.nio
可以这样做:
ByteBuffer.wrap(a).getShort()
BigInteger
可以这样做: http ://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html
BigInteger buffer = new BigInteger(yourByteArray);
long result = buffer.longValue();
请注意,如果您的字节数组的值大于 a long
(例如,您提到您可能会达到 100 个字节),toLong()
则只会返回较低值字节的值。 BigInteger
但是,将处理任意数量的字节。