读取包含C或Mathematica中的数组的二进制文件

时间:2014-01-08 07:31:41

标签: c arrays binary wolfram-mathematica

我已经发送了一个二进制文件,我需要阅读其中的一部分。文件格式被描述为:

  

第1行:NLine

     

第2行:xarray1,yarray1

     

Line2:xarray2,yarray2

     

Line2:xarray3,yarray3

     

第2行:xarray4,yarray4

     

Line2:xarray5,yarray5

     

Line2:xarray6,yarray6

     

Line6:xarray7,yarray7

其中NLine是一个整数(499是特定的),每个xarray和yarray是一个长度为NLine的浮点数组。我实际上只关心xarray7和yarray7,但我很高兴为了这个目的将所有这些都读入数组,而不是使用其他的。无论如何,我只需要将数组转换为ascii格式,这样我就可以用它们做其他事情,甚至只需将它们转换成我可以在本地处理并打印出来的数组。我很高兴在C或Mathematica中这样做。

不幸的是我无法提供数据本身或类似文件的示例 - 以上就是我所知道的。如果任何人都可以提供一些代码,让我进入我的文件(或告诉我文件不可能是这种格式或类似的东西),那将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

好的,只是为了让你去......

FILE* binFile = fopen("./path/filename.bin", "rb"); //open as binary 'b' for reading 'r'
char nextByte; // to store one byte in

// Loop through the whole file
while (!feof(binFile))
{
    // read one byte, with a size of 1 byte (could use sizeof(char) here), count of 1 from binFile, store in nextByte...
    fread(nextByte, 1, 1, binFile);

    // Print the byte
    printf("%02x ", nextByte);
}

// Close the file
fclose(binFile);

执行此操作后,它将以十六进制数字打印出二进制文件(每个值一个字节)。然后你可以分析格式。 注意:我没有测试这段代码......你还需要包含相关的c库......