作者hawfu (阿呆)
看板C_Sharp
标题[问题] 请教有关bytes转成structure
时间Mon Aug 31 23:00:48 2015
各位大大您好
小弟有个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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1441033251.A.0AC.html