如何将11位十六进制数转换为Java中唯一的11位十进制数?

Nee*_*009 0 java data-conversion

我们有一个非常奇怪的要求将11位十六进制数(范围从(A0000000001~AFFFFFFFFFF))转换为11位十进制数.并且十六进制与整数之间应该存在1:1的映射.有没有办法在Java中这样做?

Jim*_*son 8

这在Java或任何其他语言或系统中是不可能的.这种不可能性是数字和集合论的基本属性.

由于前导0xA不会改变,所以实际拥有的是10-hex数字值或40位数据.

这包含大约1.1 x 10 12个可能的值,因此不可能将其映射到11位十进制数,根据定义,它只有10 11个可能的值.

根据评论我将使这更明确.开始0xA0000000000并将其映射到十进制00000000000,然后将两者递增1以在两组成员之间建立一对一的对应关系并重复:

0xA0000000000 -> 00000000000
0xA0000000001 -> 00000000001
0xA0000000002 -> 00000000002
...
0xA0000000010 -> 00000000016
...
0xA0000000100 -> 00000000256
...
0xA0000001000 -> 00000004096
...
0xA174876E7FF -> 99999999999
...
0xA174876E800 -> oops! overflow!  too many digits
Run Code Online (Sandbox Code Playgroud)

换句话说,该组之间的所有十六进制值的大小0xA00000000000xAFFFFFFFFFF大于设定之间的所有十进制值的大0000000000099999999999.