private string GetPageSymbolValue()
        {
            var dictionaryEntry = CompressedDataConverter.DecodeInternalInt(Data, 0);
            var dictionaryValue = Record.Page.CompressionInformation.CompressionDictionary.DictionaryEntries[dictionaryEntry].Data;

            string value;

            if (AnchorField != null && AnchorField.Data != null)
            {
                var compositeData = ExpandAnchor(dictionaryValue);

                value = CompressedDataConverter.CompressedBinaryToBinary(compositeData,
                                                                         Column.DataType,
                                                                         Column.Precision,
                                                                         Column.Scale);
            }
            else
            {
                value = CompressedDataConverter.CompressedBinaryToBinary(dictionaryValue,
                                                                         Column.DataType,
                                                                         Column.Precision,
                                                                         Column.Scale);
            }

            return(string.Format("Dictionary Entry {0} - {1}", dictionaryEntry, value));
        }
        public byte[] ExpandAnchor(byte[] fieldData)
        {
            AnchorLength = CompressedDataConverter.DecodeInternalInt(fieldData, 0);

            var dataOffset = ((fieldData[0] & 0x80) == 0x80) ? 2 : 1;

            var compositeData = new byte[AnchorLength + fieldData.Length - dataOffset];

            Array.Copy(AnchorField.Data, 0, compositeData, 0, AnchorLength);
            Array.Copy(fieldData, dataOffset, compositeData, AnchorLength, fieldData.Length - dataOffset);

            return(compositeData);
        }
        private string GetValueWithAnchor()
        {
            if (Data.Length > 0)
            {
                var compositeData = ExpandAnchor(Data);

                return(CompressedDataConverter.CompressedBinaryToBinary(compositeData,
                                                                        Column.DataType,
                                                                        Column.Precision,
                                                                        Column.Scale));
            }
            else
            {
                return(CompressedDataConverter.CompressedBinaryToBinary(AnchorField.Data,
                                                                        Column.DataType,
                                                                        Column.Precision,
                                                                        Column.Scale));
            }
        }