Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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
            }));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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));
        }
Esempio n. 7
0
        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));
        }