Encoding::Unicode->GetString(ByteArr, 0, ByteArr->Length);

解决方案 »

  1.   

    應該是這樣
    Encoding::Unicode->GetString(ByteArr, 0, LengthReceivedFromSocket);
      

  2.   

    有什么区别吗,不用给出开始位置和长度也可以转换,而且通过监视,客户机和服务器收到的Byte[]都是一样的
      

  3.   

    发送前加一数据标识位

    0x02
    再加两个字节数据长度,ushort len = bytes.Length;
    byte[] bytesLength = BitConverter.GetBytes(len);
    Write(0x02);
    Write(bytesLength);
    Write(bytes);
      

  4.   

    /// <summary>
    /// 字节数组转字符串
    /// </summary>
    /// <param name="ByteArr"></param>
    /// <returns></returns>
            public static string BytesToString(byte[] ByteArr)
    {
                //return System.Text.Encoding.ASCII.GetString(ByteArr);
               //return System.Text.Encoding.Unicode.GetString(ByteArr);
              return System.Text.Encoding.UTF8.GetString(ByteArr,0,17);
              // return System.Text.Encoding.Default.GetString(ByteArr);
               //return System.Text.Encoding.BigEndianUnicode.GetString(ByteArr);
               // System.Text.UTF8Encoding ut = new System.Text.UTF8Encoding();
              // return ut.GetString(ByteArr);
                 
    }
            /// <summary>
            /// 将字符串转换成字节数组
            /// </summary>
            /// <param name="s"></param>
            /// <returns></returns>
            public static byte[] GetBytes(string s)
            {
               //return System.Text.Encoding.ASCII.GetBytes(s);
               // return System.Text.Encoding.Unicode.GetBytes(s);
                return System.Text.Encoding.UTF8.GetBytes(s);
                //return System.Text.Encoding.Default.GetBytes(s); 
                //return System.Text.Encoding.BigEndianUnicode.GetBytes(s);
            }
    我很用的都试了下