/// <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); }
/// <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))); }