[問題] 請教有關bytes轉成structure

看板C_Sharp (C#)作者 (阿呆)時間9年前 (2015/08/31 23:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位大大您好 小弟有個TCP/IP問題想請教大家 收到封包想將資料從Bytes 轉換成 structure 但轉換完成之後,查詢結構變數好像每個變數都少1個byte不見 不知有人有遇過這種情形嗎?如果有的話可以告知嗎?謝謝! 底下是部份程式碼 /*definition structure*/ public struct DI_Ack_Data { [MarshalAs(UnmanagedType.ByValTStr, SizeConst=12)] public string Data_Length; [MarshalAs(UnmanagedType.ByValTStr, SizeConst=50)] public string Domain_Name; } 有將結構變數宣告長度 /* bytes convert to structure */ public object BytesToStruct(ref byte[] bytes, Type strcutType) { int size = Marshal.SizeOf(strcutType); IntPtr buffer = Marshal.AllocHGlobal(size); try { Marshal.Copy(bytes, 0, buffer, size); return Marshal.PtrToStructure(buffer, strcutType); } finally { Marshal.FreeHGlobal(buffer); } } PS:1.有先確認收到封包長度與資料是正確的 2.將封包透過BytesToStruct函數轉換成Structure,查詢結構變數發現每個都少1個 bytes.(ex:宣告一個字串是12bytes,但轉換完變11bytes,少了1個) 這部份如果有那位大大知道,可否告知一下,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.172.211.153 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1441033251.A.0AC.html
文章代碼(AID): #1Lv6mZ2i (C_Sharp)
文章代碼(AID): #1Lv6mZ2i (C_Sharp)