我想将字节数组转换为 double ,并使用以下代码执行此操作 -
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
这会使代码暂停几毫秒,这对于应用程序来说是 Not Acceptable 。有没有办法在不使用 ByteBuffer 的情况下将字节数组转换为 double ?
最佳答案
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 - 如何在java中不使用ByteBuffer将字节数组转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20009472/