gpt4 book ai didi

c# - 从 C# MemoryStream 创建 'ChaosStream' 来读取随机长度的数据?

转载 作者:行者123 更新时间:2023-12-02 21:54:30 24 4
gpt4 key购买 nike

测试审查表明 MemoryStream 始终返回“平滑”结果。也就是说,如果我们从 MemoryStream 读取 200 字节到 400 字节工作缓冲区,那么它总是在一次调用中恰好返回 200 字节。如果我们将 4000 字节读入 200 字节工作缓冲区,则总是恰好 20 次迭代,每次迭代正好 200 字节。

问题是 MemoryStream 可以(在现实世界中,极端情况下)表示慢速流源(例如网络或文件)。所以读取可能不会那么确定性地顺利。每个读取操作可能会返回不确定的数量读取的字节(例如:8、1、105、20、5、80 ...)

那么,将普通的 MemoryStream 转换为(由于缺乏更好的词)ChaosStream 的好方法是什么,其中读取的字节数是 1 之间的随机数读取请求count? (请注意,0 表示流结束)。字节本身需要是底层字节,只需读取一些随机性/抖动即可扩大测试覆盖范围。

最佳答案

您始终可以从 MemoryStream 派生来提供一些随机性:

public class ChaosStream : MemoryStream
{
private Random random = new Random();

// Create constructors as needed to match desired MemoryStream construction

public override int Read(byte[] buffer, int offset, int count)
{
int newCount = random.Next(1, count + 1);
return base.Read(buffer, offset, newCount);
}
}

关于c# - 从 C# MemoryStream 创建 'ChaosStream' 来读取随机长度的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18003119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com