我需要实现自定义整数算术系统,例如十六进制,但多了 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
。
如果您能指出我可以阅读 Hex 在代码中的实现方式的某个地方,那将非常有帮助。到目前为止,我只能找到与其他算术系统之间的转换的实现。
非常感谢!
最佳答案
这只是基数为 20(以 20 为底)的整数。
记住值(一个抽象概念)和它的表示之间的区别。您只关心输入和输出的表示。当您输入值时,它们将以 base-20 表示,并且您希望以 base-20 输出它们。只要满足该接口(interface),它们在代码中的表示方式就无关紧要,因此您应该对需要覆盖的范围使用最方便的表示形式(int、long 或 BigInteger)。
Java 已经具备了所有必要的基础设施来处理这个问题。查看 Integer.parseInt(String value, int radix)
以获取输入。对于输出,有 Integer.toString(int value, int radix)
关于java - 实现自定义算术系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942910/