例如在 CI 中具有结构:
typedef struct {
int number;
double x1;
double y1;
double x2;
double y2;
double x3;
double y3;
} CTRstruct;`
然后我将它写入文件fwrite(&tr, 1, sizeof(tr), fp);
(tr - 它的 CTRstruct var,fp - 文件指针);
然后我需要用Java阅读它!我真的不知道如何从文件中读取结构......我试图用 阅读它ObjectInputStream()
,最后一个想法是用 阅读,RandomAccessFile()
但我也不知道如何......(readLong(), readDouble()
也不起作用,它可以正常工作但不读取正确的数据)。那么,知道如何用 Java 从二进制文件中读取 C 结构吗?
如果它很有趣,我的版本读取整数(但它很丑,我不知道该怎么做double
):
公共类 MyDataInputStream 扩展 DataInputStream{
public MyDataInputStream(InputStream AIs) {
super(AIs);
}
public int readInt1() throws IOException{
int ch1 = in.read();
int ch2 = in.read();
int ch3 = in.read();
int ch4 = in.read();
if ((ch1 | ch2 | ch3 | ch4) < 0)
throw new EOFException();
return ((ch4 << 24) + (ch3 << 16) + (ch2 << 8) + (ch1 << 0));
}
使用 double 我们可以以相同的方式处理(例如使用 int 或使用 long (8bytes),然后使用本机 func 转换为 double )。