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

Is there a way to convert from byte[] to long[]

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

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

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

但在最新版本中,他们更改了函数以取而代之的是 long[]。所以我不能再传递我的字节数组。

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

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

非常感谢对此的任何帮助

这是您应该尝试过的最简单的问题之一 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。

我想您需要将 4 个字节转换为一个长字节。所以最简单的解决方案是使用 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 需要什么。