我正在尝试使用来自 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 Block\n");
}
else
{
Console.Write("Zero block\n");
}
}
运行时,这会产生一个恒定的“好块 => 零块”流。因此,由于某种原因,BitStream 将零输出到 theCodedBlock 数组中。从代码中其他地方的内存数组读取值似乎可以正常工作,所以我做错了什么还是这是一个 BitStream 错误?