有没有办法从byte []转换为long []

时间:2016-04-27 18:04:56

标签: java android bytearray

我正在开发一个Android应用程序。我在库中使用静态函数,它将byte[]作为参数。

我曾经传递过包含36个字节的硬编码字节数组:

new byte[]{-13, 35, -92, -79, 47, -51, -57, 39, ......};

但在最新版本中,他们将功能更改为long[]。所以我不能再传递我的字节数组了。

如何将我保存的byte []转换为long [],以便仍然使用与以前相同的值的此函数?

是否有从byte[]long[]的转换?根据我的知识' byte []'可以转换为long但不能转换为长数组。

非常感谢任何有关此方面的帮助

2 个答案:

答案 0 :(得分:1)

我猜您需要将4个字节转换为1个字节。因此,最简单的解决方案是使用ByteBuffers。

long[] byteToLong(byte[] array) {
     ByteBuffer byteBuffer = ByteBuffer.wrap(array);
     LongBuffer longBuffer = byteBuffer.asLongBuffer();
     long[] result = new long[longBuffer.capacity()];
     longBuffer.get(result);
     return result;
}

注意:这会产生BigEndian值 - 不确定您的API需要什么。

答案 1 :(得分:0)

这是你应该尝试过ID IDE的最简单的问题之一。

    byte[] bytesArr = { 0, 6, 36, -84, 113, 125, -118, -47 };
    long[] longArr = new long[bytesArr.length];

    for (int i = 0; i < bytesArr.length; i++) {
        longArr[i] = bytesArr[i];
    }

此外,可以将long []转换为byte [],但是您将丢失所有不在字节范围内的值,即-128到127.