CodeProject C#比特流类给出零个数组



我正试图使用CodeProject.com上的Bill Koukoutsis的BitStream库将一块数据从8位打包转换为7位打包,该库似乎仍然是C#中这类东西的首选来源。我使用的代码如下(fs是在代码外初始化的文件流):

for (int block = 0; block < count; block++)
{
    var theBlock = fetcher(block);
    if (theBlock.Any(x => (x != 0)))
    {
        Console.Write("Good Block =>");
    }
    else
    {
        Console.Write("Zero block =>");
    }
    var sevenBitSize = theBlock.Length - (theBlock.Length/8);
    var theCodedBlock = new byte[sevenBitSize];
    var ms = new MemoryStream(theCodedBlock);
    BitStream bms = ms;
    using (bms)
    {
        foreach (byte t in theBlock)
        {
            bms.Write(t, 0, 7);
        }
        bms.WriteTo(fs);
    }
    if (theCodedBlock.Any(x => (x != 0)))
    {
         Console.Write("Good Blockn");
    }
    else
    {
         Console.Write("Zero blockn");
    }
}

运行时,这会产生一个恒定的"Good Block=>Zero Block"流。因此,由于某种原因,BitStream正在将零输出到CodeBlock数组中。它似乎可以从代码中其他地方的内存数组中读取值,所以我是做错了什么,还是这是BitStream错误?

刚刚发现问题:

BitStream库不正确地支持写入它加载的流;它写入内部缓冲区,但不执行任何操作将其写回到流中。您必须创建一个空的BitStream,写入其中,然后将其转换回MemoryStream

相关内容

  • 没有找到相关文章

最新更新