【发布时间】:2023-04-04 07:49:01
【问题描述】:
鉴于我的 uint 值为 2402914,并且我想获取最左边的 17 位,通过执行此代码,我的逻辑中的错误在哪里:
int testop = 0;
byte[] myArray = BitConverter.GetBytes(2402914);
fixed (byte* p = &myArray[0])
{
testop = *p >> 15;
}
我的预期输出是
50516.
【问题讨论】:
-
你实际获得了什么价值?
-
myArrayis: [98, 170, 36, 0]*p是指向 myArray[0] 或 (byte)98 的指针,然后您将其移动 15 个位置,直接移出的 8 位范围。我认为。我对位操作有点生疏了。 -
只有我,还是不是 C#,而是 C 或 C++?我想我在那里看到了指针。除非我遗漏了一些明显的东西。
-
@Andy 你可以在c#中做指针,它只需要在
unsafe上下文中 -
哇,太棒了。对不起,我的无知使这篇文章变得混乱。 :) 不敢相信我错过了这个。
标签: c# .net bitwise-operators fixed bit-shift