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