java - 获取 byte[] 数组的 float[] View

标签 java arrays

我有一些二进制对象作为 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/

相关文章:

java - Red5 与 BlazeDS

java - 如何在 Java 中启动一个新的 OpenStack 实例?

java - 如何使用 Retrofit 和 RxJava/RxAndroid 处理响应错误?

mysql - 如何将 NodeJs 响应转换为嵌套的 json 响应

php - 使用递归函数构建多维数组

javascript - 使用正则表达式从数组数组中删除元素

Java XML 解析 - 递归查找元素

javascript - 如何隐藏空白数组并只保留数组的值/名称?

arrays - Array 和 Split 命令创建二维数组

java - Netbeans 7.1.2 JavaFX UnsatisfiedLinkError