我需要实现一个自定义整数算术系统,例如十六进制,但多了 4 个字母。
例如,十六进制使用
[0-9,A-F]
来表示数字。我的会用[0-9,A-J]
。
Sample representations:
Decimal(5): Hex(5), MySystem(5)
Decimal(15): Hex(F), MySystem(F)
Decimal(16): Hex(10), MySystem(G)
Decimal(17): Hex(11), MySystem(H)
Decimal(18): Hex(12), MySystem(I)
Decimal(19): Hex(13), MySystem(J)
Decimal(20): Hex(14), MySystem(10)
...
我无法决定是否应该将数字存储为
String
还是 BigInteger
。这只是基数为 20(以 20 为底)的整数。
记住值(抽象概念)与其表示之间的区别。您只关心输入和输出的表示。当您输入值时,它们将以 20 为基数表示,并且您希望以 20 为基数输出它们。只要满足该接口,它们在代码中的表示方式就不重要了,因此您应该使用最方便的表示方式来表示您需要覆盖的范围(int、long 或 BigInteger)。
Java 已经拥有处理这个问题所需的所有基础设施。查看
Integer.parseInt(String value, int radix)
进行输入。对于输出有 Integer.toString(int value, int radix)