当前位置: 代码迷 >> VC >> 可不可以帮忙C++改成C# 呢。感谢
  详细解决方案

可不可以帮忙C++改成C# 呢。感谢

热度:253   发布时间:2016-05-05 00:10:38.0
能否帮忙C++改成C# 呢。感谢
希望把以下C++代码改成C#,非常感谢!

CString strSend ="XXXXXBBBBBBBBBBBBBBBBBB";
int len=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);
   
}

------解决方案--------------------


            String strSend = "XXXXXBBBBBBBBBBBBBBBBBB";
            byte[] byteSend = Encoding.UTF8.GetBytes(strSend);
            int len = senddata(byteSend, byteSend.Length);

        int senddata(byte[] buf, int num)
         {
            byte[] sendbuf = new byte[num+1];
            buf.CopyTo(sendbuf, 0);
            sendbuf[num] = (byte)'\n';
            return SSL_writego(ssl, sendbuf, num+1);
         } 



注意那句Encoding.UTF8.GetBytes()
接收端要用Encoding.UTF8.GetString()

也可能是别的编码格式,统一就好
------解决方案--------------------
相当C++的char sendbuf[512];
的是
byte[] sendbuf = new byte[512];
不过这样写不好,若是senddata超过512,就越界了。
而我的写法
byte[] sendbuf = new byte[num+1];
则不会有问题。