我想将字节数组转换为双精度,并使用以下代码执行此操作-
double fromByteArraytoDouble(byte[] bytes) {
return ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).getDouble();
}
这段代码有效,但是我在Android应用中反复调用此函数。 (循环实际上是一个不断运行的后台进程。)wrap()函数应该在每次调用时创建一个新对象,因此,在几个执行周期之后,Android车库收集器开始运行以清理内存(我从DDMS)-
D/dalvikvm(6174): GC_FOR_ALLOC freed 2K, 5% free 12020K/12580K, paused 15ms, total 15ms
这会将代码暂停几毫秒,这对于应用程序是不可接受的。有没有一种方法可以在不使用ByteBuffer的情况下将字节数组转换为两倍?
最佳答案
long bits = 0L;
for (int i = 0; i < 8; i++) {
bits |= (bytes[i] & 0xFFL) << (8 * i);
// or the other way around, depending on endianness
}
return Double.longBitsToDouble(bits);
关于java - 如何在不使用ByteBuffer的情况下将字节数组转换为Java中的double,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20009472/