实现自定义算术系统

问题描述 投票:0回答:1

我需要实现一个自定义整数算术系统,例如十六进制,但多了 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

如果您能指出我可以阅读十六进制如何在代码中实现的地方,那将会非常有帮助。到目前为止,我只能找到仅用于从/到其他算术系统的转换的实现。

java math hex integer-arithmetic
1个回答
3
投票

这只是基数为 20(以 20 为底)的整数。

记住(抽象概念)与其表示之间的区别。您只关心输入和输出的表示。当您输入值时,它们将以 20 为基数表示,并且您希望以 20 为基数输出它们。只要满足该接口,它们在代码中的表示方式就不重要了,因此您应该使用最方便的表示方式来表示您需要覆盖的范围(int、long 或 BigInteger)。

Java 已经拥有处理这个问题所需的所有基础设施。查看

Integer.parseInt(String value, int radix)
进行输入。对于输出有
Integer.toString(int value, int radix)

© www.soinside.com 2019 - 2024. All rights reserved.