我正在开发一个Android应用程序。我在库中使用静态函数,它将byte[]
作为参数。
我曾经传递过包含36个字节的硬编码字节数组:
new byte[]{-13, 35, -92, -79, 47, -51, -57, 39, ......};
但在最新版本中,他们将功能更改为long[]
。所以我不能再传递我的字节数组了。
如何将我保存的byte []转换为long [],以便仍然使用与以前相同的值的此函数?
是否有从byte[]
到long[]
的转换?根据我的知识' byte []'可以转换为long
但不能转换为长数组。
非常感谢任何有关此方面的帮助
答案 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.