我有一个包含多个字节的长二进制字符串,
我需要使用fseek
来获取字符串中的特定字节。
我知道我需要计算偏移但是我不确定是否偏移 由位或字节计算。例如,如果我需要到第3个字节 我需要将指标提前3或(3 * 8 =)24?
答案 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 byte
和not Number of byte * 8