将Bitvector64.Section转换为Bitvector32

Vel*_*elu -3 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);
Run Code Online (Sandbox Code Playgroud)

我现在需要什么

  1. Mysect2在BitVector64.Section中具有值.我需要将explictity转换为BitVector32.Section并传递结果.

以下转换对我不起作用

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

以下转换对我不起作用

            mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2) as BitVector34.Section;
Run Code Online (Sandbox Code Playgroud)

要么

   mySect3 = (BitVector64.Section) BitVector32.CreateSection(7, (BitVector32.Section) mySect2) ;
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 7

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

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

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