如何用浮点值“填充”IntPtr参数?

时间:2009-06-12 09:17:20

标签: c# floating-point dllimport intptr

我正在使用dllImport在C#.NET中使用C库。此库中的一个方法使用数据类型void *作为参数。我发现,我可以在C#中使用与void *相匹配的数据类型IntPtr。

现在我根本不知道如何设置此IntPtr参数的值。实际上我想在这个参数中加上一个浮点值。我该怎么做?

提前感谢任何想法。 西蒙

1 个答案:

答案 0 :(得分:3)

如果您可以使用不安全的块,则可以使用:

static IntPtr IntPtrFromFloat( float f )
{
    unsafe
    {
        return (*(IntPtr*)&f);
    }
}

它创建一个IntPtr,其地址等于float的二进制表示。

也应该可以将参数声明为float。无论如何它是32位[假定为32位C-DLL]。