public byte[] GetSendDataLenghtBytes(string dataHead,string datas)
        {
            var bs = Encoding.GetEncoding("GB2312").GetBytes(dataHead);
            var bs2 = Encoding.GetEncoding("GB2312").GetBytes(datas);
            var bytes = new byte[bs.Length + 2];            bytes[bs.Length -1] = (byte)(bs2.Length / byte.MaxValue);
            bytes[bs.Length -2] = (byte)(bs2.Length % byte.MaxValue);
            bs.CopyTo(bytes, bs.Length);//得到添加了长度的数组bytes            var tmpDatas = Encoding.GetEncoding("GB2312").GetBytes("&" + datas + "#");
            var dataBytes = new byte[bytes.Length + tmpDatas.Length];
            dataBytes.CopyTo(tmpDatas, bytes.Length);
            return tmpDatas;
        }小弟有以上方法,目的是计算形参datas的长度,然后附加到dataHead的byte数组上然后返回。
但是写了一下,死活说我目标数组的长度不够。请检查 destIndex 和长度,请教高手大哥,我这里那里写错了?

解决方案 »

  1.   

    你写错的地方太多了。而且好些错误不应该发生。:)。我给你改了一个。你对比吧。        public static byte[] GetSendDataLenghtBytes(string dataHead, string datas)
            {
                var bs = Encoding.GetEncoding("GB2312").GetBytes(dataHead);
                var bs2 = Encoding.GetEncoding("GB2312").GetBytes(datas);
                var bytes = new byte[bs.Length + 2];            bytes[bytes.Length - 1] = (byte)(bs2.Length / byte.MaxValue);
                bytes[bytes.Length - 2] = (byte)(bs2.Length % byte.MaxValue);
                bs.CopyTo(bytes, 0);//得到添加了长度的数组bytes            //var tmpDatas = Encoding.GetEncoding("GB2312").GetBytes("&" + datas + "#");
                var dataBytes = new byte[bytes.Length + bs2.Length];
                bytes.CopyTo(dataBytes, 0);
                bs2.CopyTo(dataBytes, bytes.Length);
                return dataBytes;
            }