字节流实现 - 是否正确实现了偏移?

时间:2014-03-25 07:17:27

标签: c++ c

我遇到了一些有关字节流的有趣代码。 例如,这是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对吗?

1 个答案:

答案 0 :(得分:1)

这意味着offset指向bstream的结尾。

这就像std::vector::end()所做的那样。