为什么和操作符在使用时的行为方式不同:
一个字节数组在转换为(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
答案 0 :(得分:2)
假设32位little-endian system(与今天绝大多数计算机中的任何英特尔处理器一样),将字节数组{02 03 04 FF}的地址转换为32位int的地址将得到一个值为0xFF040302的int。因此结果。
换句话说,你假设它是“相同的值”是不正确的。