C 通訊,結構體和byte陣列互轉

2021-06-26 00:03:49 字數 980 閱讀 8106

在c#進行udp或者tcp/ip通訊時,經常要用到byte陣列來傳遞資訊。一開始,我是使用bitconverter和encoding來進行轉換。後來經過大神指導,其實一切不必那麼麻煩。只需將要傳送的資訊封裝成結構體,使用c#自帶的乙個轉換類便可輕鬆搞定。

首先建立乙個結構體

//必須引用的庫
using system.runtime.interopservices;

namespace test

}

其次建立轉換類

using system;

using system.runtime.interopservices;

namespace test

public static t bytestostruct(byte bytes) where t:struct

intptr structptr = marshal.allochglobal(size);

marshal.copy(bytes, 0, structptr, size);

object tempobj = marshal.ptrtostructure(structptr, obj.gettype());

marshal.freehglobal(structptr);

return (t)tempobj; }}

}

使用方法如下

public static byte getsensorheaserinfo()

至於位元組數轉換結構體則如下

byte msg = m_listenudp.receive(ref remoteendpoint);

sensorheadinfo headerinfo = messageswitch.bytestostruct(msg);

接收到訊息後直接轉換

C 結構體轉換byte

using system using system.collections.generic using system.text using system.runtime.interopservices 需要新增命名空間 namespace yuanlichenxiao public class co...

C 和 C 結構體Socket通訊

最近在用c 做乙個專案的時候,socket傳送訊息的時候遇到了服務端需要接收c 結構體的二進位制資料流,這個時候就需要用c 仿照c 的結構體做出乙個結構來,然後將其轉換成二進位製流進行傳送,之後將響應訊息的二進位制資料流轉換成c 結構。1 仿照c 結構體寫出c 的結構來 using system.r...

C 和 C 結構體Socket通訊

最近在用c 做乙個專案的時候,socket傳送訊息的時候遇到了服務端需要接收c 結構體的二進位制資料流,這個時候就需要用c 仿照c 的結構體做出乙個結構來,然後將其轉換成二進位製流進行傳送,之後將響應訊息的二進位制資料流轉換成c 結構。1 仿照c 結構體寫出c 的結構來 using system.r...