IntPtr是如何编组的?

本文关键字:何编组 IntPtr | 更新日期: 2023-09-27 18:15:55

直到最近,我还认为在p/Invoke中编组IntPtr只涉及"比特化"操作;例如,简单地将指针从c++复制到c#。

然而,最近我和某人交谈时,他提到还有更多的事情要做。他特别提到IntPtr编组考虑到字节顺序(即小端或大端)。这对我来说似乎很奇怪:当然,字节顺序并不重要,除非我们将指针发送到另一台机器,天知道为什么要这样做?

这里有人能给我讲讲这个吗?并可能链接到一些资源以供进一步阅读?谢谢你。

IntPtr是如何编组的?

这是一个直接的blit,在概念上与intlong没有什么不同。显然在x86下是4字节,在x64下是8字节。这里没有魔法。

端序从来都不是p/invoke封送的问题。端序是底层机器的属性。使用p/invoke调用的非托管DLL使用与托管代码相同的端序,因为它们运行在同一台机器上。