Сохраните FloatArray в файле Raw
Мне нужно сохранить массив чисел с плавающей запятой в Big Endian в файл Raw. Кто-нибудь знает, как это сделать? Я думал, что java.io.DataOuputStream.writeFloat(float v), но я точно не знаю, как включить этот метод в проблему. Благодарность!
1 ответ
Попробуй это.
static final ByteOrder BYTE_ORDER = ByteOrder.BIG_ENDIAN;
static void write(float[] floats, String file) throws IOException {
ByteBuffer bb = ByteBuffer.allocate(floats.length * Float.BYTES).order(BYTE_ORDER);
bb.asFloatBuffer().put(floats);
Files.write(Path.of(file), bb.array());
}
static float[] read(String file) throws IOException {
byte[] bytes = Files.readAllBytes(Path.of(file));
FloatBuffer fb = ByteBuffer.wrap(bytes).order(BYTE_ORDER).asFloatBuffer();
float[] floats = new float[fb.capacity()];
fb.get(floats);
return floats;
}
а также
float[] floats = {12.3F, 4.5F, 0.678F, 0.009F};
String file = "data/floats.bin";
write(floats, file);
float[] read = read(file);
System.out.println(Arrays.toString(read));
выход:
[12.3, 4.5, 0.678, 0.009]
Вы можете изменить порядок байтов в файле, изменив BYTE_ORDER
постоянный.