コード例 #1
0
        public override CompileResult Execute(IEnumerable <FunctionArgument> arguments, ParsingContext context)
        {
            ValidateArguments(arguments, 1);
            var number  = ArgToString(arguments, 0);
            var padding = default(int?);

            if (arguments.Count() > 1)
            {
                padding = ArgToInt(arguments, 1);
                if (padding.Value < 0 ^ padding.Value > 10)
                {
                    return(CreateResult(eErrorType.Num));
                }
            }
            var decNumber = TwoComplementHelper.ParseDecFromString(number, 16);
            var result    = Convert.ToString(Convert.ToInt32(decNumber), 8);

            if (decNumber < 0)
            {
                result = PaddingHelper.EnsureLength(result, 10, "7");
            }
            else if (padding.HasValue)
            {
                result = PaddingHelper.EnsureLength(result, padding.Value, "0");
            }
            else
            {
                result = PaddingHelper.EnsureMinLength(result, 10);
            }
            return(CreateResult(result, DataType.String));
        }
コード例 #2
0
        public override CompileResult Execute(IEnumerable <FunctionArgument> arguments, ParsingContext context)
        {
            ValidateArguments(arguments, 1);
            var number = ArgToString(arguments, 0);
            var result = TwoComplementHelper.ParseDecFromString(number, 16);

            return(CreateResult(result, DataType.Integer));
        }