Помогите на C# реализовать вызов некой функции и работу с данными. Причем на C функция имеет вид:
int32 GetInfo(char ** Info, int * Len);
вызвать функцию удается и в указателе на указатель на буфер Info длинной Len и содержится необходимая информация.
Мне нужно ее вытащить.
Я делаю такой вызов:
byte[] si = new byte[Len];
Marshal.Copy(Info, si, 0, Len);
Таким образом нужный мне буфер теперь прдставлен байтовым массивом si. Так же, например, я знаю что 4 первых байта представляют собой число типа Integer (в формате PC), но я не знаю как преобразовать первые четыре байта в тип int.
Вот я и спрашиваю — правильно ли я пытаюсь получить необходимый мне буфер и как преобразовывать некоторое количество байт к какому-либо типу.
Здравствуйте Sciler, Вы писали:
S>Помогите на C# реализовать вызов некой функции и работу с данными. Причем на C функция имеет вид:
S>S>int32 GetInfo(char ** Info, int * Len);
S>
S>вызвать функцию удается и в указателе на указатель на буфер Info длинной Len и содержится необходимая информация.
S>Мне нужно ее вытащить.
В данном случае Len является лишним. см. Array.Length
S>Я делаю такой вызов:
S>S>byte[] si = new byte[Len];
S>Marshal.Copy(Info, si, 0, Len);
S>
S>Таким образом нужный мне буфер теперь прдставлен байтовым массивом si. Так же, например, я знаю что 4 первых байта представляют собой число типа Integer (в формате PC), но я не знаю как преобразовать первые четыре байта в тип int.
BitConverter.ToInt32
S>Вот я и спрашиваю — правильно ли я пытаюсь получить необходимый мне буфер и как преобразовывать некоторое количество байт к какому-либо типу.
BitConverter
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.