用于从Base-10转换为Base-9的Java代码

Emi*_*mil 4 java number-systems

如何将基数10中的长数转换为基数9而不转换为字符串?

MAK*_*MAK 8

FWIW,所有值实际上都在机器内的基数2(我打赌你已经知道了).它只显示为基数10,因为字符串转换在基数10中创建字符串表示(例如,当您打印时),因为类似parseLong的方法假设输入字符串在基数10中,并且因为编译器希望所有文字在您实际写入时都在基数10中码.换句话说,一切都是二进制的,计算机只是为了方便我们人类而将东西转换成基础10.

因此,我们应该能够轻松地将输出基数更改为10以外的值,从而在基数9中获得相同值的字符串表示.在Java中,这是通过将可选的额外基本参数传递给Long.toString方法来完成的.

long x=10;
System.out.println(Long.toString(x,9));
Run Code Online (Sandbox Code Playgroud)


mR_*_*r0g 6

Long base10 = 10;
Long.valueOf(base10.toString(), 9);
Run Code Online (Sandbox Code Playgroud)

  • 除非是家庭作业,否则通过字符串是最明智的路线,除非你有强烈的性能要求.否则,您只需重新实现`valueOf()`使用的算法(实质上,使用模数和整数除法从基数中选出基数为9的数字). (2认同)

Gro*_*uez 6

"转换为基数9而不转换为字符串"实际上意味着什么?

Base-9,base-10,base-2(二进制),base-16(十六进制),只是表示数字的方法.值本身并不取决于您如何表示它.int x = 256int x = 0xff编译器而言,它完全相同.

如果你不想"转换为字符串"(我读这意味着你不关心值的表示),那么你想要做什么呢?