function getNonDecimalNumberParts (input) {
  const nonDecimalWithRadixMatch = input.match(/(0[box])([0-9a-fA-F]*)\.([0-9a-fA-F]*)/)
  if (nonDecimalWithRadixMatch) {
    const radix = ({ '0b': 2, '0o': 8, '0x': 16 })[nonDecimalWithRadixMatch[1]]
    const integerPart = nonDecimalWithRadixMatch[2]
    const fractionalPart = nonDecimalWithRadixMatch[3]
    return { input, radix, integerPart, fractionalPart }
  } else {
    return null
  }
}
Separates the radix, integer part, and fractional part of a non decimal number string
@param {string} input string to parse
@returns {object} the parts of the string or null if not a valid input