-4

我已经为 BitVector64 创建了 mysec 变量。对于小于 8 的版本,我想使用 BitVector32 生成值

    static BitVector64.Section mySect1;
    static BitVector64.Section mySect2;
    static BitVector64.Section mySect3;

if (versions) > 7)
            mySect2 = BitVector64.CreateSection(14, mySect1);  // V1      - 3 bits
        else
            mySect3 = BitVector32.CreateSection(7, mySect2);

我现在需要什么

  1. Mysect2 在 BitVector64.Section 中有值。我需要将显式转换为 BitVector32.Section 并传递参数。

以下转换对我不起作用

            mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2);
  1. 将获取 mysect3 的 BItVector32.Section 中的值需要转换为 BitVector64.Section

以下转换对我不起作用

            mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2) as BitVector34.Section;

或者

   mySect3 = (BitVector64.Section) BitVector32.CreateSection(7, (BitVector32.Section) mySect2) ;
4

1 回答 1

7

.NET 框架中没有名为“BitVector64”的类型。我不得不猜测你是从某个地方复制的。显然,您复制的这段代码不支持从 BitVector32.Section 到 BitVector64.Section 的隐式转换。

这并不奇怪,它提供的优化非常小。相反,从 uint 到 ulong 的转换相对昂贵,不值得非常小的内存节省。特别是因为这是一个结构。

BitVector32(可能还有 BitVector64)明确用于使位操作快速高效。比 BitArray 更快,因为它可以利用 cpu 寄存器操作。不要让它变慢。

于 2011-08-12T12:38:51.423 回答