c - 读取内部具有不同字节长度值的二进制文件

标签 c c++11 io

如何读取不同长度格式的二进制文件?

例如二进制文件的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/

相关文章:

c++ - std::set 中的 unique_ptr 无法找到 operator< 即使它在那里

C++ 全局变量的后期实例化

C - 断言失败错误

c - C中void和float函数的区别

c++ - 查找类型,其中 is_constructible 成立

java - 在 Scala 中读取大文件

io - 文件句柄超出范围时如何关闭?

c++ - 从标准 I\O 流读取和写入会导致错误

c - GPU上size_t的sizeof是多少?

c - MPI_等待: Request pending due to failure