matlab - 如何从返回long的Java方法中获取int64?

Evg*_*eev 28 java matlab type-conversion

根据Matlab文档,当Java方法返回a时long,它将被转换为double之前在Matlab中分配的方法.

精度已经丧失.我long对Java方法返回的低位感兴趣.A double不能代表他们,但Matlab int64可以.(通过考虑两种类型都有64位,并且double使用其中一些来表示指数,这是很清楚的.)

如果我控制了Java代码,我可以返回一个包含一个元素的数组,其中包含long- 在这种情况下,Matlab将它们保存为int64s,但在我的情况下,我正在调用一个库函数.

目前,我能看到的最好的方法是用Java编写一个包装器,它将调用该方法并在数组中返回答案.但是这种方法存在可移植性问题.有没有更好的办法?

Evg*_*eev 1

long基本上已经在评论中得到了回答,但为了完整起见,将 Java 完好无损地接收到 Matlab 的最佳方法int64似乎是编写一个小型 Java 包装器,它调用您拥有的任何方法并以long[].

\n\n

(如果要分发代码,请考虑使用比最新 \xe2\x80\x94 稍早​​的目标 JVM 版本来编译该 Java 类,否则某些用户将被迫升级其 JVM 来运行您的软件,而某些用户将被迫升级其 JVM 来运行您的软件。这些人没有管理员权限来执行此操作。)

\n