将字符串转换为IntPtr

| 对不起,我的英语不好。 我使用将字符串转换为IntPtr
COPYDATASTRUCT cd = new COPYDATASTRUCT();
            cd.dwData = 0;

            cd.lpData = Marshal.StringToHGlobalAuto(Msg).ToInt32();
            cd.cbData = Msg.Length;
  Marshal.StringToHGlobalAuto(Msg);
并使用SendMessage方法将其发送到另一个窗口 当我收到并读取IntPtr作为字符串使用
COPYDATASTRUCT CD = (COPYDATASTRUCT)Marshal.PtrToStructure(lParam, typeof(COPYDATASTRUCT));
 byte[] B = new byte[CD.cbData]; 
IntPtr lpData = new IntPtr(CD.lpData);
string temp = Marshal.PtrToStringUni(lpData);
Marshal.Copy(lpData, B, 0, CD.cbData);
string strData = Encoding.Default.GetString(B);
我收到此数据 M \\ 0S \\ 0G \\ 0!\\ 0 @ \\ 01 \\ 0 | \\ 01 \\ 0 | \\ 0C \\ 0:\\ 0 \\\\ 0U \\ 0s \\ 0e \\ 0r \\ 0s \\ 0 \\\\ 0f \\ 0。\\ 0a \\ 0l \\ 0s \\ 0a \\ 0 当我做strData.Replace(\“ \\ 0 \”,\“ \”) 我收到我的消息,但消息被截断了。 MSG!@ 1 | 1 | C:\\ Users \\ f.alsa 原始消息是MSG!@ 1 | 1 | C:\\ Users \\ f.alsayyed \\ Desktop \\ File.ktb     
已邀请:
在我看来,您的replace函数早于字符串结尾处找到了零终止符,因为似乎您接收到的数据也包含在字符串中的零。     

要回复问题请先登录注册