using system;
using system.collections.generic;
using system.text;
using system.runtime.interopservices; //需要新增命名空間
namespace yuanlichenxiao
public class converdata
//長度
int len = marshal.sizeof(obj);
bytebuffer = new byte[len];
//從程序非託管記憶體中分配記憶體
intptr ptr = marshal.allochglobal(len);
//將資料從託管的物件封送到非託管記憶體
marshal.structuretoptr(obj, ptr, true);
//將資料從非託管的記憶體指標複製到託管
marshal.copy(ptr, buffer, 0, len);
//釋放分配的記憶體
marshal.freehglobal(ptr);
return buffer;}
///
/// 將byte還原成結構體
///
/// byte
///
///
public static object bytetostruct(byte buffer, type type)
intptr ptr = marshal.allochglobal(len);
//將託管資料複製到非託管記憶體
marshal.copy(buffer, 0, ptr, len);
object obj = marshal.ptrtostructure(ptr, type);
//釋放記憶體
marshal.freehglobal(ptr);
return obj;}
///
/// 呼叫
///
public void useexample()}}
C 通訊,結構體和byte陣列互轉
在c 進行udp或者tcp ip通訊時,經常要用到byte陣列來傳遞資訊。一開始,我是使用bitconverter和encoding來進行轉換。後來經過大神指導,其實一切不必那麼麻煩。只需將要傳送的資訊封裝成結構體,使用c 自帶的乙個轉換類便可輕鬆搞定。首先建立乙個結構體 必須引用的庫using s...
結構體轉換
package main import fmt type student struct type person struct type stu student func main fmt.println s var p person person s p 不能這樣直接賦值,a4.go 16 4 ca...
C 結構體和指標轉換
在寫c 通訊程式時。傳送資料,只能傳送byte陣列,處理起來比較麻煩不說,如果是和vc6.0等寫的程式通訊的話,很多的都是傳送結構體,在vc6.0中可以很方便的把乙個char陣列轉換為乙個結構體,而在c 卻不能直接把byte陣列轉換為結構體,要在c 中傳送結構體,可以按以下方法實現 1 定義結構體 ...