作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在对一种类型转换机制进行建模,该机制将 native ( Windows Data Types) 转换为 .NET
示例:
HANDLE = System.IntPtr
HDC = System.IntPtr
WORD = System.UInt16
INT_PTR
在它们各自的机器上是 32 位/64 位的,所以在 .NET 中就是 System.IntPtr
HALF_PTR
(和其他)在各自的 32 位/64 位机器上是 16 位/32 位...
那么我将如何在 .NET 中为 HALF_PTR
建模 - 如果可能的话?
我想另一种看待这个问题的方式是:是否有一个等效于 C# 的“短”指针...类似于 ShortPtr?
最佳答案
这不是问题。它在 Basetsd.h 中声明,但实际上并未在任何 winapi 声明中使用。您实际遇到它的几率非常接近于零。
如果必须的话,它只是为面向 64 位处理器的程序定义的。它将一个 64 位指针映射到两个 32 位指针。通过将 IntPtr 转换为 UInt64 并使用 & 0xffffffff
和 >> 32
获得两个 UInt32 部分,您将获得相同的结果。
关于c# - 如何在 C# 中映射 HALF_PTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18253260/
我是一名优秀的程序员,十分优秀!