我遇到了一些有关字节流的有趣代码。 例如,这是init方法:
int aim_bstream_init(aim_bstream_t *bs, fu8_t *data, int len)
{
if (!bs)
return -1;
bs->data = data;
bs->len = len;
bs->offset = 0;
return 0;
}
但我对如何实现偏移有点困惑。也许我错误地得到了偏移的概念, 并帮助赞赏。像这里:
int aim_bstream_setpos(aim_bstream_t *bs, int off)
{
if (off > bs->len)
return -1;
bs->offset = off;
return off;
}
if中的>
令我困惑。假设字节流的长度为3。
我们说移动到位置3
- 这是不可能的吗?因为
如果长度为3,我们只有元素0,1,2
。
在代码中,if(off > bs->len)
- 会检查3> 3 - 这将是错误的
和函数将继续设置bs->offset = off;
-
我认为这是错误的,因为如果len = 3,你就不能有偏移
3对吗?
答案 0 :(得分:1)
这意味着offset
指向bstream
的结尾。
这就像std::vector::end()
所做的那样。