【发布时间】:2016-05-11 17:06:54
【问题描述】:
我尝试从二进制文件中读取值。我知道偏移量(3201)并使用它。
示例代码:
FILE *bin_file;
int *job_id_buffer;
bin_file = fopen("sample.sgy", "rb");
if (bin_file == NULL)
{
// ... skipped ...
}
fseek(bin_file, 3201, SEEK_SET);
job_id_buffer = (int*)malloc(sizeof(int));
fread(job_id_buffer, sizeof(int), 1, bin_file);
printf("%d\n", (int)job_id_buffer[0]);
fclose(bin_file);
看起来我不知道如何正确读取值。
但问题是当我得到结果时,值是 993024,而我 100% 知道正确的值是 9999。
请你帮我理解我做错了什么?
提前谢谢你!
【问题讨论】:
-
9999 = 0x0000270F, 993024 = 0x000F2700
-
您似乎偏离了一个字节,并且您的字节顺序错误。
-
你确定文件的字节序和程序的一样吗?
-
@stark 我确定不是。
-
首先@JimmyB 你是对的!问题出在 1 个字节中,我使用 3201 偏移量而不是 3200。谢谢!现在我有一个值 - 254214144(小端) - 如果将其转换为大端是 9999。附言我会将您的回答标记为正确,但我不知道您的评论如何 ^(
标签: c