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

标签 c arrays binary wolfram-mathematica

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

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/

相关文章:

c - 建议 : trying to recognize when a device is not connected

c - 将多个值从一个函数返回到另一函数

python - 在其他 numpy 数组中查找 numpy 数组

python - 如何将 int 转换为包含二进制表示的列表在 python 中快速?

java - 如何用java语言将字符 'A'转换为二进制 '1010'

c - 函数,链表。将一个链表复制到另一个链表

c++ - #define 变量在 windows.h 中被忽略并重新定义

Java删除数组中的冗余项

java - 使用 jsonpath 表达式的数组大小 - Stefan Goessner JsonPath

将十进制数的每一位转换为相应的二进制数