簡化C#結構為網絡傳輸的字節數組轉換 >有效地跨網絡傳輸結構化數據通常需要將C#結構轉換為字節陣列。 儘管結構組相關的數據,但它們與二進製網絡傳輸並不直接兼容。
>讓我們用一個示例說明:
>將a
<code class="language-csharp">public struct CIFSPacket { public uint protocolIdentifier; public byte command; // ... other fields }</code>實例(
)轉換為字節數組,請按照以下步驟:CIFSPacket
packet
using System.Runtime.InteropServices;
Marshal.SizeOf(packet)
計算字節中的結構大小
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(packet, ptr, true);
字節數組創建:byte[] arr = new byte[size]; Marshal.Copy(ptr, arr, 0, size);
內存版本:Marshal.FreeHGlobal(ptr);
此過程將結構轉換為可以進行網絡的字節陣列。 對於您的結構中的字符串字段,請使用
屬性,用最大字符串長度替換。
此方法可確保可靠的結構到字節陣列轉換可靠的網絡通信。<code class="language-csharp">public CIFSPacket FromBytes(byte[] arr) { CIFSPacket str = new CIFSPacket(); int size = Marshal.SizeOf(str); IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.Copy(arr, 0, ptr, size); str = (CIFSPacket)Marshal.PtrToStructure(ptr, str.GetType()); Marshal.FreeHGlobal(ptr); return str; }</code>
以上是如何有效地將C#結構轉換為網絡通信的字節陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!