我在理解此代码时遇到麻烦,想要一个很好的解释。
以下函数接收一个十六进制文件并修改地址,而不会覆盖其他所有内容。
有人可以向我解释它是如何做到的吗?
unsafe void WriteUint32(void* p, int Offset, uint value)
{
*(uint*)((byte*)p + Offset) = value;
}
答案 0 :(得分:0)
如果我们忽略Offset
,则您拥有
*(uint*)((byte*)p) = value;
只是将value
指向p
所指向的对象,解释为uint
。
添加Offset
只会将指针更改为分配给value
的位置。