The only base values the library support are: 2, 8, 10, 16. And yet - we pass it around in larger types, and not even the same type everywhere. So, why should we not just use a single small type for the base? Say, `uint_least8_t` or `uint_fast8_t`?