将Bitvector64.Section转换为Bitvector32

时间:2011-08-12 12:18:33

标签: c# collections bitvector

我为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中具有值。我需要将explictity转换为BitVector32.Section并传递结果。
  2. 以下转换对我不起作用

                mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2);
    
    1. 将获取BItVector32.Section中mysect3的值需要转换为BitVector64.Section
    2. 以下转换对我不起作用

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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