BaseNcoding.Base1024.Encode C# (CSharp) Метод

Encode() публичный Метод

public Encode ( byte data ) : string
data byte
Результат string
        public override string Encode(byte[] data)
        {
            int dataLength = data.Length;
            StringBuilder result = new StringBuilder((dataLength + 4) / 5 * 4 + 1);

            int i;
            int x1, x2, x3, x4, x5;
            int length5 = (dataLength / 5) * 5;
            for (i = 0; i < length5; i += 5)
            {
                x1 = data[i];
                x2 = data[i + 1];
                x3 = data[i + 2];
                x4 = data[i + 3];
                x5 = data[i + 4];

                result.Append(Alphabet[x1 | ((x2 & 0x03) << 8)]);
                result.Append(Alphabet[(x2 >> 2) | ((x3 & 0x0F) << 6)]);
                result.Append(Alphabet[(x3 >> 4) | ((x4 & 0x3F) << 4)]);
                result.Append(Alphabet[(x4 >> 6) | (x5 << 2)]);
            }

            switch (dataLength - length5)
            {
                case 1:
                    x1 = data[i];

                    result.Append(Alphabet[x1]);
                    result.Append(Special, 4);
                    break;
                case 2:
                    x1 = data[i];
                    x2 = data[i + 1];

                    result.Append(Alphabet[x1 | ((x2 & 0x03) << 8)]);
                    result.Append(Alphabet[x2 >> 2]);
                    result.Append(Special, 3);
                    break;
                case 3:
                    x1 = data[i];
                    x2 = data[i + 1];
                    x3 = data[i + 2];

                    result.Append(Alphabet[x1 | ((x2 & 0x03) << 8)]);
                    result.Append(Alphabet[(x2 >> 2) | ((x3 & 0x0F) << 6)]);
                    result.Append(Alphabet[x3 >> 4]);
                    result.Append(Special, 2);
                    break;
                case 4:
                    x1 = data[i];
                    x2 = data[i + 1];
                    x3 = data[i + 2];
                    x4 = data[i + 3];

                    result.Append(Alphabet[x1 | ((x2 & 0x03) << 8)]);
                    result.Append(Alphabet[(x2 >> 2) | ((x3 & 0x0F) << 6)]);
                    result.Append(Alphabet[(x3 >> 4) | ((x4 & 0x3F) << 4)]);
                    result.Append(Alphabet[x4 >> 6]);
                    result.Append(Special);
                    break;
            }

            return result.ToString();
        }