我想将一个字节数组转换为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
暂停代码几毫秒,这对应用来说是不可接受的。有没有办法在不使用ByteBuffer的情况下将字节数组转换为double?
答案 0 :(得分:2)
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);