private BitArray TextCode(string text, Dictionary <char, int> frequencyDictionary) { var res = new BigInteger(0); var digitCnt = 0; var probabilities = new List <RationalNumber>(); var mapSymbolsInNumber = new Dictionary <char, int>(); probabilities.Add(0); foreach (var pair in frequencyDictionary) { mapSymbolsInNumber.Add(pair.Key, probabilities.Count); probabilities.Add(new RationalNumber(pair.Value, text.Length) + probabilities[probabilities.Count - 1]); } RationalNumber a = 0; RationalNumber b = 1; foreach (var c in text) { var index = mapSymbolsInNumber[c]; var length = b - a; b = probabilities[index] * length + a; a = probabilities[index - 1] * length + a; while (RetrieveCode(ref a, ref b, ref res, ref digitCnt)) { } } res = res * 10 + a.FirstDigitAfterDot() + 1; digitCnt++; return(BitArrayConverter.ConvertToBitArray(res, digitCnt)); }
private BitArray TextCode(string text, Dictionary <char, BitArray> codesDictionary) { var bitArrays = new List <BitArray>(); foreach (var c in text) { bitArrays.Add(codesDictionary[c]); } return(BitArrayConverter.ConvertToBitArray(bitArrays)); }
private BitArray GetCode(string text, Dictionary <char, BitArray> codesDictionary, out int codeLength) { var dictionaryCode = CodesDictionaryCoder.GetCode(codesDictionary); var textCode = TextCode(text, codesDictionary); codeLength = textCode.Length; return(BitArrayConverter.ConvertToBitArray(new List <BitArray>() { dictionaryCode, textCode })); }
private BitArray ListOfPairsToBitArray(List <Pair <char, int> > listOfPairs) { var arrays = new List <BitArray>(); foreach (var pair in listOfPairs) { arrays.Add(BitArrayConverter.ConvertToBitArray(pair.First)); arrays.Add(BitArrayConverter.ConvertToBitArray(pair.Second, LengthOfNumber)); } return(BitArrayConverter.ConvertToBitArray(arrays)); }
private BitArray GetCode(string text, Dictionary <char, int> frequencyDictionary, out int codeLength) { var length = BitArrayConverter.ConvertToBitArray(text.Length, 32); var dictionaryCode = FrequencyDictionaryCoder.GetCode(frequencyDictionary); var textCode = TextCode(text, frequencyDictionary); codeLength = textCode.Length; return(BitArrayConverter.ConvertToBitArray(new List <BitArray>() { length, dictionaryCode, textCode })); }
public static BitArray GetCode(Dictionary <char, int> frequencyDictionary) { var bitArrays = new List <BitArray>(); var cnt = BitArrayConverter.ConvertToBitArray(frequencyDictionary.Count, 8); bitArrays.Add(cnt); foreach (var pair in frequencyDictionary) { var symbol = BitArrayConverter.ConvertToBitArray(pair.Key, 16); var code = BitArrayConverter.ConvertToBitArray(pair.Value, 32); bitArrays.Add(symbol); bitArrays.Add(code); } return(BitArrayConverter.ConvertToBitArray(bitArrays)); }
public static BitArray GetCode(Dictionary <char, BitArray> codesDictionary) { var bitArrays = new List <BitArray>(); var cnt = BitArrayConverter.ConvertToBitArray(codesDictionary.Count, 8); bitArrays.Add(cnt); foreach (var pair in codesDictionary) { var symbol = BitArrayConverter.ConvertToBitArray(pair.Key, 16); var length = BitArrayConverter.ConvertToBitArray(pair.Value.Length, 5); var code = pair.Value; bitArrays.Add(symbol); bitArrays.Add(length); bitArrays.Add(code); } return(BitArrayConverter.ConvertToBitArray(bitArrays)); }