Exemplo n.º 1
0
        // ========= USAGE 3 =========
        // int BaseEncoding.GetEncodeCount(int length)
        // int BaseEncoding.Encode(byte[] bytesIn, int offsetIn, int lengthIn, char[] charsOut, int offsetOut)
        // int BaseEncoding.GetDecodeCount(char[] chars, int offset, int length)
        // int BaseEncoding.Decode(char[] charsIn, int offsetIn, int lengthIn, byte[] bytesOut, int offsetOut)
        static void Usage3(string testName, BaseEncoding encoding, string testVector)
        {
            int encodeOffset = 99, decodeOffset = 199;

            byte[] origin          = Encoding.Default.GetBytes(testVector);
            byte[] originBuffer    = WrapArray <byte>(origin, 33, 44);
            char[] baseCharsBuffer = new char[encoding.GetEncodeCount(origin.Length) + encodeOffset * 2];
            // == encode
            int encodeNum = encoding.Encode(originBuffer, 33, origin.Length, baseCharsBuffer, encodeOffset);

            // ==
            byte[] binBuffer = new byte[encoding.GetDecodeCount(baseCharsBuffer, encodeOffset, encodeNum) + decodeOffset * 2];
            // == decode
            int decodeNum = encoding.Decode(baseCharsBuffer, encodeOffset, encodeNum, binBuffer, decodeOffset);

            // ====== result
            char[] baseChars = SubArray <char>(baseCharsBuffer, encodeOffset, encodeNum);
            byte[] binData   = SubArray <byte>(binBuffer, decodeOffset, decodeNum);
            // == output
            Console.WriteLine("[" + testName + "]\tVector: " + testVector + "\tBaseString: "
                              + new string(baseChars) + "\t" + (ArrayEquals(origin, binData) ? "Success" : "failed"));
        }