我有一些二进制对象作为 byte[]
,我需要在对它们执行一些计算之前将它们转换为 float[]
。
我目前的做法如下:
bytes[] binaryData;
float[] docVector = new float[vectorSize];
ByteBuffer.wrap(binaryData).asFloatBuffer().get(docVector);
这确实有效,但据我所知,它创建了原始数组的副本,是否有可能获得指向二进制数组相同内存地址的 float 组?在 python 和 numpy 中,例如可以执行以下操作来查看内存中的相同数据:
import numpy as np
binary_data = np.zeros(40, dtype=np.uint8)
float_array = binary_data.view(np.float32)
最佳答案
在java中是不可能的。
做类似事情的唯一方法是我们Flyweight图案
编辑
我错误地使用了名称“Flyweight”(感谢@AdrianShum)。 我的意思是这样的类:
class FloatArray {
byte[] buff;
void set(int index, float value) { ... }
float get(int index) { ... }
}
关于java - 获取 byte[] 数组的 float[] View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52182072/