【问题标题】:Typecasting array of floats into an array of shorts in Java将浮点数组类型转换为Java中的短裤数组
【发布时间】:2014-05-07 11:38:18
【问题描述】:

如何将浮点数组的类型转换更改为具有一一对应关系的短裤数组?即

int bufferSize = 256;
short[] myShort = new short[bufferSize];
float[] myFloat = new float[bufferSize];
for(int i=0;i<bufferSize;i++){
     myShort[i] = (short) myFloat[i];
 }

我正在寻找更紧凑、更简单的代码。我的处理时间真的很短(没有双关语)。

【问题讨论】:

  • 当然,人们可能会注意到在上述情况下您不需要复制任何内容,因为两个数组都将被初始化为零。但大概您打算添加一些代码,在 myFloat 创建之后和将其“强制转换”到 myShort 之前对其进行修改。

标签: java


【解决方案1】:

我会保持原样。 Java 标准库中没有其他方法可以做到这一点。

【讨论】:

    【解决方案2】:

    如果性能是最重要的,我建议使用JNI(Java Native Interface)

    简而言之,用 C/C++ 编写此函数,并使用本机方法调用它。

    从 float 到 short 的转换使用 2 条 JVM 指令:f2i、i2s,它们将使用许多汇编指令。使用本机方法,您可以使用特殊的 cpu 指令(SSE?)快速完成此操作。

    here 正在讨论浮点到整数的转换。

    【讨论】:

    • 为什么要投反对票?我不明白。他说`处理时间真的很短`。使用 C/C++,你可以从 CPU 或 GPU 获得加速,虽然我不知道如何。
    猜你喜欢
    • 2012-01-26
    • 2011-12-03
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 2014-07-31
    • 2011-08-24
    • 2021-11-13
    • 1970-01-01
    相关资源
    最近更新 更多