将 Bitvector64.Section 转换为 Bitvector32

发布于 2024-11-29 09:41:39 字数 1000 浏览 0 评论 0原文

我已经为 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) ;

I have created the mysec variables for BitVector64. For the version less than 8 I would like to generate the value using the 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);

What I need now

  1. Mysect2 having value in BitVector64.Section. I need to convert explictity to BitVector32.Section and pass the aruguments.

Below converstion is not working for me

            mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2);
  1. Will get the values in BItVector32.Section for mysect3 need to convert to the BitVector64.Section

Below converstion is not working for me

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

or

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

习ぎ惯性依靠 2024-12-06 09:41:39

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

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

BitVector32(大概还有 BitVector64)的存在明确是为了使位操作快速高效。比 BitArray 更快,因为它可以利用 cpu 寄存器操作。别让它变慢。

There is no type named "BitVector64" in the .NET framework. I would have to guess that you copied it from somewhere. Clearly this code you copied does not support an implicit conversion from BitVector32.Section to BitVector64.Section.

Which is unsurprising, the optimization it provides is extremely small. Rather the opposite, the conversion from uint to ulong is relatively expensive and not worth the very minor memory saving. Especially since this is a struct.

BitVector32 (and presumably BitVector64) is there explicitly to make bit manipulations fast and efficient. Faster than BitArray since it can take advantage of cpu register operations. Don't make it slow.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文