日期:2014-05-17  浏览次数:20759 次

小妹再交求助,C++转C#遇到问题。
感谢前2天小妹发贴后,得到朋友的解答。因为小妹刚学C#,是新手。希望园里有朋友帮助解决一下。
也是上次的问题,测试后结果不一样的。不知什么回事。

C++

CString strSend="abc测试测试";

 senddata(strSend.GetBuffer(strSend.GetLength()),strSend.GetLength());

int CVC6ClientDlg::senddata(char * buf,int num)
{
    char sendbuf[512];
memcpy(sendbuf,buf,num);
    sendbuf[num]='\n';


return SSL_writego(ssl, sendbuf, num+1);
   
}

改成C#

String strSend="abc测试测试";
 byte[] byteSend = Encoding.ASCII.GetBytes(strSend);

  senddata(byteSend, strSend.Length);

protected int senddata(byte[] buf, int num)//此方法转成C#不对
        {

            byte[] sendbuf = new byte[num+1];
            buf.CopyTo(sendbuf, 0);
            sendbuf[num] = (byte)'\n';
         // return SSL_writego(ssl, sendbuf, num+1);
          
            return 0;//只是测试
        } 

结果中sendbuf 是不一样的 请问C#如何修改?

------解决方案--------------------
Encoding.ASCII.GetBytes
可能是编码
小妹 我C#想转C++呢- -
------解决方案--------------------
看不懂c++的,帮顶
------解决方案--------------------
看不懂的路过
------解决方案--------------------
String?strSend="abc测试测试";
?byte[]?byteSend?=?Encoding.ASCII.GetBytes(strSend);

ASCII 只支持英文半角,支持中文要用 
?byte[]?byteSend?=?Encoding.UTF8.GetBytes(strSend);

------解决方案--------------------
Encoding.UTF8.GetBytes();
------解决方案--------------------
Encoding.UTF8.GetBytes();
或这个
Encoding.GetEncoding("gb2312").GetBytes();
试试