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