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

发现在做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;    // 帐号
};

 

posted on 2019-01-27 15:29  &大飞  阅读(338)  评论(0编辑  收藏  举报

导航