在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...