大字节数组分片,依据n*n>=len(data)。

Code

    private byte[] SplitByteArray(byte[] originbyte, int originstartindex, int destbytelength, int destbytestartindex = 0)
    {
        byte[] result = new byte[destbytelength];
        System.Array.Copy(originbyte, originstartindex, result, destbytestartindex, destbytelength);
        return result;
    }
    int byte_count = 0;
    int split_i = 0;
    int split_n = 0;
    int serving_size = 0;
    int tail_size = 0;
    IEnumerator SenderFile()
    {
        while (!stop)
        {
            //EncodeBytes();
            if (onSender)
            {
                if (glimg_byte_arr.Length <= MaxOneSplit)
                {
                    EncodeBytes(glimg_byte_arr);
                }
                else
                {
                    byte[] out_little_byte;
                    if (split_i == split_n)
                    {
                        out_little_byte = SplitByteArray(glimg_byte_arr, byte_count, tail_size, 0);
                        onSender = false;
                    }
                    else {
                        out_little_byte = SplitByteArray(glimg_byte_arr, byte_count, serving_size, 0);
                        byte_count += serving_size;
                    }
                    EncodeBytes(out_little_byte);
                    split_i++;
                }
            }
            yield return null;
        }
    }
                // campute split n
                split_n = Convert.ToInt32(Math.Ceiling(Math.Sqrt(Convert.ToDouble(bytes.Length))));
                double ssize = (bytes.Length / split_n);
                serving_size = Convert.ToInt32(Math.Floor(ssize));
                tail_size = Convert.ToInt32(bytes.Length % split_n);
⤧  Previous post 字符串、本地化与正则表达式