在c中查看二进制文件时,我是按比特还是按字节进行操作?

时间:2013-09-28 15:34:04

标签: c offset binaryfiles

我有一个包含多个字节的长二进制字符串, 我需要使用fseek来获取字符串中的特定字节。

我知道我需要计算偏移但是我不确定是否偏移 由位或字节计算。例如,如果我需要到第3个字节 我需要将指标提前3或(3 * 8 =)24?

2 个答案:

答案 0 :(得分:1)

fseek将偏移量作为字节数,而不是位:

  

从文件开头的新位置以字节为单位,应通过将偏移量添加到由whence指定的位置来获得。 (重点是我的)。

答案 1 :(得分:0)

   int fseek(FILE *stream, long offset, int whence);

fseek()函数设置stream指向的流的文件位置指示符。新位置measured in bytes是通过将offset个字节添加到whence指定的位置获得的。

如果whence设置为SEEK_SET, SEEK_CUR, or SEEK_END,则偏移量分别相对于start of the file, the current position indicator, or end-of-file

如果您正在使用文本文件

First Byte position  ==>  fseek(fp,0,SEEK_SET);
Second Byte position ==>  fseek(fp,1,SEEK_SET);
Third Byte position  ==>  fseek(fp,2,SEEK_SET); 

您只需指定Number of bytenot Number of byte * 8

即可