IntPtr是如何编组的?

时间:2014-08-01 15:08:12

标签: c# pinvoke intptr

直到最近,我才认为在P / Invoke中编组IntPtr只会涉及到一个' blitting'操作;即,简单地从例如复制指针。 C ++到C#。

然而,最近我和某人谈话时提到的还有更多。他特别提到IntPtr编组会考虑字节顺序(即little-endian或big-endian)。这对我来说似乎很奇怪:除非我们将指针发送到另一台机器上,否则字节顺序并不重要,上帝知道你为什么这样做?

这里的任何人都可以为我提供更多的信息;并可能链接到一些资源进一步阅读?谢谢。

1 个答案:

答案 0 :(得分:4)

这是一个直接的blit,与intlong在概念上没有区别。显然它在x86下是4个字节,在x64下是8个字节。这里没有魔力。

字节顺序从不是p / invoke编组的问题。字节序是底层机器的属性。您使用p / invoke调用的非托管DLL使用与托管代码相同的字节顺序,因为它们在同一台机器上运行。