【发布时间】:2021-06-23 01:40:02
【问题描述】:
考虑java中的以下函数
public static String changeToBinary(int n) {
String s = "";
while (n>0) {
if (n%2==0)
s="0"+s;
else
s="1"+s;
System.out.println(s);
n=n/2;
}
return s;
}
它接受整数并将其转换为二进制数(表示为字符串)。
我想做同样的事情,但也允许大于 java 的最大整数的数字。为此,我应该使用字符串而不是整数作为函数的参数。
如何编写相同的函数,但允许表示可能大于 java 的最大整数值的数字的字符串?
例如,如果输入是changeToBinary("45"),我希望输出是101101
如果输入是changeToBinary("6147483647")(这是一个大于java整数最大值的数字),那么输出是101101110011010110010011111111111
提前致谢。
【问题讨论】:
-
您可以编写例程来对您的小数/字符串执行
%2(简单)和/2(更难)。 -
或者您可以使用
BigInteger(在接口或实现中)。它支持值 -2^Integer.MAX_VALUE(独占)到 +2^Integer.MAX_VALUE(独占),数量很多,应该足以满足几乎所有用例