好的,我知道这是一个奇怪的问题:
我正在编写这段java代码,需要加载原始数据(大约130000个浮点数):
这个数据永远不会改变,因为我不想为PC和Android编写不同的加载方法,所以我想把它作为float[]
嵌入到源文件中。
太糟糕了,似乎有65535个条目的限制;有没有一种有效的方法呢?
答案 0 :(得分:2)
将该数据存储在类路径中的文件中;然后将该数据作为ByteBuffer
读取,然后您将转换"到FloatBuffer
。请注意,以下代码假定为大端:
final InputStream in = getClass().getResourceAsStream("/path/to/data");
final ByteArrayOutputStream out = new ByteArrayOutputStream();
final byte[] buf = new byte[8192];
int count;
try {
while ((count = in.read(buf)) != -1)
out.write(buf, 0, count);
} finally {
out.close();
in.close();
}
final FloatBuffer buf = ByteBuffer.wrap(out.toByteArray()).asFloatBuffer();
然后,您可以.get()
中的FloatBuffer
。
答案 1 :(得分:0)
如果这是您使用该方法的唯一问题,您可以使用2个或3个数组来达到极限。