Bytestream实现-偏移量正确实现

Bytestream implementation - is offset correctly implemented?

本文关键字:实现 Bytestream 偏移量      更新时间:2023-10-16

我遇到了一些关于字节流的有趣代码。例如,这是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,则我们只有元素CCD_。

在代码中,if(off > bs->len)-将检查3>3-它将为false并且函数将继续设置bs->offset = off;-我认为这是错误的,因为如果len=3,就不能有偏移3对吧?

表示offset指向bstream的末尾。

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