从二进制文件中获取一个 long int

Acquire a long int from a binary file

我有一个二进制文件,其中 64 位块是我需要的数字。如果我尝试阅读它:

FILE *ptr;
ptr = fopen("HH", "rb"); //r for read, b for binary
ulong val;
fseek(ptr, 0, SEEK_SET);
fread(&val, 8, 1, ptr);

它不起作用(它给出的随机值总是不同的),但如果我说他获取直到 3 个字节(从某种意义上说,我对这三个字节有正确的值 - 几乎没有结束编码),它就会起作用,这是正确的)。我也尝试过使用 char 类型,它将每个字节的正确值放入我的 char 数组的每个元素中,但后来我不知道如何将它转换为 long int 类型(我设法做到了每个元素的元素,但不是我需要的)。你能帮助我吗?谢谢!

我理解错了!只是printf的问题,数据获取的很好。我说:

printf ("%d", val);

而不是

printf ("%ld", val);

其中 ld 用于长类型...