Пример #1
0
        /// <summary>
        /// Compress and optionally base64-encode a raw fingerprint.
        /// </summary>
        /// <param name="fp">pointer to an array of 32-bit integers representing the raw fingerprint to be encoded</param>
        /// <param name="algorithm">Chromaprint algorithm version which was used to generate the raw fingerprint</param>
        /// <param name="base64">Whether to return binary data or base64-encoded ASCII data. The
        /// compressed fingerprint will be encoded using base64 with the URL-safe scheme if you
        /// set this parameter to 1. It will return binary data if it's 0.</param>
        /// <returns>The encoded fingerprint</returns>
        public static byte[] EncodeFingerprint(int[] fp, int algorithm, bool base64)
        {
            FingerprintCompressor compressor = new FingerprintCompressor();
            string compressed = compressor.Compress(fp, algorithm);

            if (!base64)
            {
                return(Base64.ByteEncoding.GetBytes(compressed));
            }

            return(Base64.ByteEncoding.GetBytes(Base64.Encode(compressed)));
        }
        public void TestOneItemOneBit()
        {
            FingerprintCompressor compressor = new FingerprintCompressor();

            int[]  fingerprint = { 1 };
            string value       = compressor.Compress(fingerprint);

            byte[] expected = { 0, 0, 0, 1, 1 };
            byte[] actual   = Base64.ByteEncoding.GetBytes(value);

            CollectionAssert.AreEqual(actual, expected);
        }
Пример #3
0
        /// <summary>
        /// Return the calculated fingerprint as a compressed string.
        /// </summary>
        /// <returns>The fingerprint as a compressed string</returns>
        public string GetFingerprint()
        {
            FingerprintCompressor compressor = new FingerprintCompressor();

            return(Base64.Encode(compressor.Compress(this.fingerprint, algorithm)));
        }