我需要实现一个自定义整数运算系统,比如十六进制,但还有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的地方,那将会非常有帮助。到目前为止,我只能找到来自/到其他算术系统的转换的实现
非常感谢!
答案 0 :(得分:3)
这只是基数为20(基数为20)的整数。
记住值(抽象概念)与其表示之间的区别。您只关心输入和输出的表示。当您输入值时,它们将在base-20中表示,并且您希望在base-20中输出它们。只要该接口满足,它们的代码如何在代码中表示就无所谓了,因此您应该使用最方便的表示来覆盖(int,long或BigInteger)。
Java已经拥有了解决这个问题的所有必要基础设施。查看Integer.parseInt(String value, int radix)
以获取输入。对于输出,有Integer.toString(int value, int radix)