我不明白-*(uint *)((byte *)p + Offset)

时间:2019-09-03 01:55:50

标签: hex byte uint

我在理解此代码时遇到麻烦,想要一个很好的解释。

以下函数接收一个十六进制文件并修改地址,而不会覆盖其他所有内容。

有人可以向我解释它是如何做到的吗?

unsafe void WriteUint32(void* p, int Offset, uint value)
        {
            *(uint*)((byte*)p + Offset) = value;
        }

1 个答案:

答案 0 :(得分:0)

如果我们忽略Offset,则您拥有

*(uint*)((byte*)p) = value;

只是将value指向p所指向的对象,解释为uint

添加Offset只会将指针更改为分配给value的位置。