public void TestTwoItems() { FingerprintCompressor compressor = new FingerprintCompressor(); int[] fingerprint = { 1, 0 }; string value = compressor.Compress(fingerprint); byte[] expected = { 0, 0, 0, 2, 65, 0 }; byte[] actual = Base64.ByteEncoding.GetBytes(value); CollectionAssert.AreEqual(actual, expected); }
public void TestOneItemOneBitExcept2() { FingerprintCompressor compressor = new FingerprintCompressor(); int[] fingerprint = { 1 << 8 }; string value = compressor.Compress(fingerprint); byte[] expected = { 0, 0, 0, 1, 7, 2 }; byte[] actual = Base64.ByteEncoding.GetBytes(value); CollectionAssert.AreEqual(actual, expected); }
/// <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)); }
/// <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)); }