and演算子を使用すると動作が異なる理由:
- unsignedintを使用
(uint *)にキャストされたときに同じ値を表すバイト配列を使用
unsafe { fixed (byte* i = new byte[4] { 0x02, 0x03, 0x04, 0xFF }) { uint m = 0x020304FF; Console.WriteLine("{0:X}",m & 0xFF000000); Console.WriteLine("{0:X}",*(uint*)i & 0xFF000000); } }
結果は
2000000
ff000000