public static void GenBFFileFromFixedBlockOfOldFile(string oldFile, string bfFile) { var buff = new byte[BlockSize]; var fLength = 0; using (var fs = new FileStream(oldFile, FileMode.Open, FileAccess.Read, FileShare.Read)) { fLength = (int)fs.Length; var nBlocks = fLength / BlockSize; var m = nBlocks * BloomFilterRatio; m += m % 8 == 0 ? 0 : 8 - (m % 8); var hList = BloomFilter.DefaultHashFuncs(); var bf = new BloomFilter(m, hList); var byteRead = 0; for (var i = 0; i < nBlocks; ++i) { byteRead = fs.Read(buff, 0, BlockSize); if (byteRead != BlockSize) { throw new InvalidDataException(); } bf.Add(buff, 0, byteRead); } // Serialize bf. using (var file = File.Create(bfFile)) { Serializer.Serialize(file, bf); } } }
static BloomFilter GenerateBF(List<int> values) { var n = values.Count; var m = n * 12; m += m % 8 == 0 ? 0 : 8 - (m % 8); var hList = BloomFilter.DefaultHashFuncs(); var bf = new BloomFilter(m, hList); foreach (var value in values) { var byteArr = BitConverter.GetBytes(value); bf.Add(byteArr); } return bf; }