将 Bitvector64.Section 转换为 Bitvector32
我已经为 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);
我现在需要
- Mysect2 在 BitVector64.Section 中具有值。我需要将显式转换为 BitVector32.Section 并传递参数。
下面的转换对我不起作用
mySect3 = BitVector32.CreateSection(7, (BitVector32.Section) mySect2);
- 将获取 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
- 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);
- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
.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.