【发布时间】:2011-12-29 02:25:47
【问题描述】:
我正在阅读一些代码,其中一部分是:
public static unsafe byte[] GetBytes(uint value, bool BigEndian)
{
byte[] buff = new byte[4];
fixed (byte* pbyte = buff)*((uint*)pbyte) = value;
if (BigEndian)
buff.EndianConvert();
return buff;
}
我知道它只是将单元位置的 4 个字节放入一个字节数组中,但我不清楚如何。
我的理解是:
(byte* pbyte = buff)
创建并返回一个字节指针pbyte,它指向buff的地址,
(uint*)pbyte
将 pbyte 的地址转换为 uint 指针?,
但我不明白其余部分。固定关键字有什么用?为什么不能这样做:
(byte* pbyte = buff) = (byte*)value;
【问题讨论】: