|
|
|
@ -2,6 +2,56 @@ package com.xydl.cac.model.spectrogram;
|
|
|
|
|
|
|
|
|
|
import lombok.Data;
|
|
|
|
|
|
|
|
|
|
import java.io.DataInputStream;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.nio.ByteBuffer;
|
|
|
|
|
import java.nio.ByteOrder;
|
|
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
|
|
|
|
|
|
@Data
|
|
|
|
|
public class SpectrogramModel {
|
|
|
|
|
|
|
|
|
|
// 读取小端序的int(4字节)
|
|
|
|
|
public static int readLittleEndianInt(DataInputStream dis) throws IOException {
|
|
|
|
|
byte[] bytes = new byte[4];
|
|
|
|
|
dis.readFully(bytes);
|
|
|
|
|
return ByteBuffer.wrap(bytes)
|
|
|
|
|
.order(ByteOrder.LITTLE_ENDIAN)
|
|
|
|
|
.getInt();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 读取小端序的short(2字节)
|
|
|
|
|
public static short readLittleEndianShort(DataInputStream dis) throws IOException {
|
|
|
|
|
byte[] bytes = new byte[2];
|
|
|
|
|
dis.readFully(bytes);
|
|
|
|
|
return ByteBuffer.wrap(bytes)
|
|
|
|
|
.order(ByteOrder.LITTLE_ENDIAN)
|
|
|
|
|
.getShort();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 读取小端序的long(8字节)
|
|
|
|
|
public static long readLittleEndianLong(DataInputStream dis) throws IOException {
|
|
|
|
|
byte[] bytes = new byte[8];
|
|
|
|
|
dis.readFully(bytes);
|
|
|
|
|
return ByteBuffer.wrap(bytes)
|
|
|
|
|
.order(ByteOrder.LITTLE_ENDIAN)
|
|
|
|
|
.getLong();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 读取小端序的float(4字节)
|
|
|
|
|
public static float readLittleEndianFloat(DataInputStream dis) throws IOException {
|
|
|
|
|
byte[] bytes = new byte[4];
|
|
|
|
|
dis.readFully(bytes);
|
|
|
|
|
return ByteBuffer.wrap(bytes)
|
|
|
|
|
.order(ByteOrder.LITTLE_ENDIAN)
|
|
|
|
|
.getFloat();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 读取String
|
|
|
|
|
public static String readString(DataInputStream dis, int length) throws IOException {
|
|
|
|
|
byte[] bytes = new byte[length];
|
|
|
|
|
dis.readFully(bytes);
|
|
|
|
|
String str = new String(bytes, StandardCharsets.UTF_8);
|
|
|
|
|
return str.replaceAll("\\u0000", "");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|