如何使用 fread 读取第一个两个字节和接下来的两个字节?

How to use fread to read 1st two bytes and next two bytes?

我有一个以字节为单位的原始文件

XX XX 其中每个 X 代表 1 个字节。

如何分别读取第一个两个字节和接下来的两个字节?我只能一次阅读所有内容。读取 2 个字节后,我想将其转换为整数。

FILE * f = fopen(filename, type);

// Position pointer at 0
fseek(f, 0, SEEK_END);

// Read file size
long lSize = ftell(f);

// Initialize temporary container
char *pixels;

// Allocate memory to temporary container
data = (char*)malloc(sizeof(char)*lSize);

// Read intensity data
fread(data, 1, lSize, f);

谢谢。

XX XX X XXX....

每个 X = 1 个字节

第2个X代表行数 第二个X代表列数

XXX以后表示图像的强度数据。我可以通过将 fseek 移动到位置 6 来读取图像,但是我手动指定了行数和列数,因为我不知道如何分别读取第一个两个字节和接下来的两个字节

没有任何示例数据很难做到这一点,但您会想要这样的东西。顺便说下带ftell()的文件长度不用求了

未经测试的代码...

unsigned short nrows,ncols;

FILE * f = fopen(filename, type);

// Get number of rows
fread(&nrows,2,1,f);

// Get number of cols
fread(&ncols,2,1,f);

// Read all rows, one row at a time
for(r=0;r<nrows;r++){
    row[r]=(unsigned short*)malloc(ncols*2);
    fread(row[r],cols*2,1,f);
}