예제 #1
0
        public static UInt16 getReferencedMemoryPointer(string input)
        {
            if (!isMemoryReference(input))
            {
                throw new CommandParseException("Incorrect memory reference: " + input);
            }

            return(ConvertRadix.ConvertNumberWithPrefix(input.Substring(1, input.Length - 2)));
        }
예제 #2
0
        ////////////////////////////////////////////////////////////////////
        //
        // Method: convertNumberWithPrefix()
        //       - default number(without prefix) is hexadecimal
        //
        ////////////////////////////////////////////////////////////////////
        public static UInt16 ConvertNumberWithPrefix(string input) //Prefix: % - binary, # - hexadecimal
        {
            if (input == null || input.Trim() == String.Empty)
            {
                throw new CommandParseException("Empty or null value cannot be converted => error");
            }
            string inputTrimmed = input.Trim();

            // % - binary
            if (inputTrimmed[0] == '%')
            {
                var number = inputTrimmed.Substring(1, inputTrimmed.Length - 1);
                return(ConvertRadix.ParseUInt16(number, 2));
            }
            // $ - decimal
            if (inputTrimmed[0] == '$')
            {
                var number = inputTrimmed.Substring(1, inputTrimmed.Length - 1);
                return(ConvertRadix.ParseUInt16(number, 10));
            }

            // '#' or 'x' - hexadecimal
            if (inputTrimmed[0] == '#' || inputTrimmed[0] == 'x')
            {
                var number = inputTrimmed.Substring(1, inputTrimmed.Length - 1);
                return(ConvertRadix.ParseUInt16(number, 16));
            }
            // '0x' - hexadecimal
            if (inputTrimmed.Length >= 3)
            {
                if (inputTrimmed[0] == '0' && inputTrimmed[1] == 'x')
                {
                    var number = inputTrimmed.Substring(2, inputTrimmed.Length - 2);
                    return(ConvertRadix.ParseUInt16(number, 16));
                }
            }
            return(ConvertRadix.ParseUInt16(inputTrimmed, 16));
        }