我收到了一个二进制文件,我需要阅读其中的一部分。文件格式被描述为:
Line1: NLine
Line2: xarray1,yarray1
Line2: xarray2,yarray2
Line2: xarray3,yarray3
Line2: xarray4,yarray4
Line2: xarray5,yarray5
Line2: xarray6,yarray6
Line6: xarray7,yarray7
其中 NLine 是一个整数(具体来说是 499),每个 xarray 和 yarray 都是一个长度为 NLine 的 float 组。实际上,我只真正关心 xarray7 和 yarray7,但我很高兴为此目的将它们全部读入数组,而不使用其他的。无论如何,我只需要将数组转换为 ascii 格式,这样我就可以用它们做其他事情,或者甚至只是将它们转换成我可以在本地处理并打印出来的数组。我很乐意在 C 或 Mathematica 中执行此操作。
不幸的是,我无法提供数据本身或类似文件的示例——以上就是我所知道的。如果有人可以提供一些代码让我进入我的文件(或者告诉我文件不可能是这种格式或其他格式),我们将不胜感激。
谢谢!
最佳答案
好吧,只是为了让你继续......
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 库……
关于c - 在 C 或 Mathematica 中读取包含数组的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20989501/