C 結構體轉換byte

2021-06-17 21:14:17 字數 1070 閱讀 8358

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 定義結構體 ...