好吧,我知道这是一个有点奇怪的问题:
我正在编写这段java代码,需要加载原始数据(大约130000个 float ):
这些数据永远不会改变,而且由于我不想为 PC 和 Android 编写不同的加载方法,所以我正在考虑将其作为 float[]
嵌入到源文件中。
太糟糕了,似乎有 65535 个条目的限制;有什么有效的方法吗?
最佳答案
将该数据存储在类路径中的文件中;然后将该数据作为 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();
然后您可以从FloatBuffer
中.get()
。
关于Java:是否可以将原始数据存储在源文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22730636/