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); }