如何读取不同长度格式的二进制文件?
例如二进制文件的3200字节后有一个具体值,格式为4字节、2字节、2字节、1字节。
我试着用
阅读fread(&buffer, 1, 1, file);
然后将缓冲区变量中的 4 个字节的字符连接成一个字符 - 然后将其转换为整数,但它不起作用。仅显示为一个字节长度。
最佳答案
首先你寻找你想阅读的位置:
fseek(file, 3200, SEEK_SET);
然后从文件中读出4个字节到你想要的整数:
int n;
fread(&n, 4, 1, file);
如果文件的字节序与您的系统相同,则此方法有效。否则,您将数字转换为系统的字节序。例如
// if the file is big endian:
m = be32toh(n);
// if the file is little endian:
m = le32toh(n);
关于c - 读取内部具有不同字节长度值的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36611484/