Конвертировать Bitvector64.Section в Bitvector32 - PullRequest
0 голосов
/ 12 августа 2011

Я создал переменные mysec для BitVector64. Для версии менее 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 и передать параметры.

Ниже разговор не работает для меня

            mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2);
  1. Получит значения в BItVector32. Раздел для mysect3 необходимо преобразовать в BitVector64.Section

Ниже разговор не работает для меня

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

или

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

1 Ответ

7 голосов
/ 12 августа 2011

В .NET Framework нет типа с именем «BitVector64». Я должен был бы догадаться, что вы скопировали это откуда-то. Очевидно, что этот код, который вы скопировали, не поддерживает неявное преобразование из BitVector32.Section в BitVector64.Section.

Что неудивительно, оптимизация, которую он обеспечивает, крайне мала. Скорее наоборот, преобразование из uint в ulong является относительно дорогим и не стоит очень незначительной экономии памяти. Тем более, что это структура.

BitVector32 (и, по-видимому, BitVector64) предназначен для быстрой и эффективной обработки битов. Быстрее, чем BitArray, поскольку он может использовать преимущества операций регистра процессора. Не замедляй.

...