Как «заполнить» параметр IntPtr значением с плавающей запятой? - PullRequest
3 голосов
/ 12 июня 2009

Я использую dllImport для использования библиотеки C в C # .NET. Один из методов в этой библиотеке использует тип данных void * в качестве параметра. Я обнаружил, что я могу использовать тип данных IntPtr в C #, соответствующий void *.

Теперь я просто не знаю, как установить значение этого параметра IntPtr. На самом деле я хочу поместить значение с плавающей точкой в ​​этот параметр. Как бы я это сделал?

Заранее спасибо за любую идею. Simone

1 Ответ

3 голосов
/ 12 июня 2009

Если вы можете использовать небезопасные блоки, этот работает:

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

Создает IntPtr, содержащий адрес, равный двоичному представлению с плавающей точкой.

Также должно быть возможно просто объявить параметр как float. В любом случае это 32 бита [предполагается 32-битная C-DLL].

...