如何使用fread读取前两个字节和后两个字节?

时间:2016-03-31 10:47:39

标签: fread

我有一个包含数据的原始文件

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个字节

前两个X代表行数 第二个X代表cols数

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

1 个答案:

答案 0 :(得分:0)

没有任何样本数据很难做到,但你会想要这样的东西。顺便说一下,您不需要找到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);
}