Beispiel #1
0
        public override string ToText(IDataModel rawData, int offset, bool deep)
        {
            var result  = new StringBuilder("-");
            var options = rawData.GetBitOptions(SourceArrayName);

            for (int i = 0; i < Length; i++)
            {
                var bits = rawData[offset + i];
                if (options == null)
                {
                    result.Append(bits.ToString("X2"));
                }
                else
                {
                    var optionOffset = i << 3;
                    for (int j = 0; j < 8; j++)
                    {
                        if ((bits & (1 << j)) == 0)
                        {
                            continue;
                        }
                        result.Append(" ");
                        result.Append(options[optionOffset + j]);
                    }
                }
            }

            result.Append(" ");
            if (options != null)
            {
                result.Append("/");
            }
            return(result.ToString());
        }
        public override string ToText(IDataModel rawData, int offset, bool deep)
        {
            var result  = new StringBuilder("-");
            var options = rawData.GetBitOptions(SourceArrayName);

            // handle edge cases: no options, or no options for some set bits
            var highestByteSet = Length - 1;

            while (rawData[offset + highestByteSet] == 0 && highestByteSet > 0)
            {
                highestByteSet -= 1;
            }
            var highestBitSet     = (int)Math.Log(rawData[offset + highestByteSet], 2);
            var unknownBitsAreSet = options == null || (highestByteSet * 8) + highestBitSet >= options.Count;

            for (int i = 0; i < Length; i++)
            {
                var bits = rawData[offset + i];
                if (unknownBitsAreSet)
                {
                    result.Append(bits.ToString("X2"));
                }
                else
                {
                    var optionOffset = i << 3;
                    for (int j = 0; j < 8; j++)
                    {
                        if ((bits & (1 << j)) == 0)
                        {
                            continue;
                        }
                        result.Append(" ");
                        result.Append(options[optionOffset + j]);
                    }
                }
            }

            result.Append(" ");
            if (options != null)
            {
                result.Append("/");
            }
            return(result.ToString());
        }