您的位置:首页 > 移动开发 > Unity3D

C++服务器和unity3d的C#通信乱码问题

2016-07-15 19:47 1071 查看
本文为原创,转载请注明出处!

前段时间把工作辞掉了,发现做的问题有点多,最新发现在做C++服务器和UNITY3D通信,在传输的结构体上,因为两边类型不一样,传输接受全是乱码,搞了1天多,有了一点心得。

其他的类型对应,在网上很容易找到,主要是C++里面的TCHAR和C#的string对应问题。

ansi编码 TCHAR占用1个字节 Unicode编码 占用2个字节

因为传输的字符串中有中文,所以采用Unicode编码,在C#这边要这么写。

//结构体采用顺序排列,采用Unicode字符集,1字节对齐
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)]
struct CMD_GR_LogonByAccounts
{
public byte     Flags;      //标识
//转为string 固定大小10字节
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
public string   PassWord;   // 密码

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
public string   Accounts;	// 帐号
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: