-6
任何人都可以向我展示将二进制字符串转换为小数的算法,以及用于存储输出的首选方法吗?我知道如何通过Integer.parseInt()
来预制转换,但我真的很想看到它的算法。在Java中将二进制字符串转换为十进制的算法
任何人都可以向我展示将二进制字符串转换为小数的算法,以及用于存储输出的首选方法吗?我知道如何通过Integer.parseInt()
来预制转换,但我真的很想看到它的算法。在Java中将二进制字符串转换为十进制的算法
在每个字符上循环累积一个值。每次将值乘以2
,如果您看到一个1
,则将它加上1
。
public void test() {
// Arbitrarily chosen test string.
String s = "0100001101101";
// Start at 0.
int v = 0;
// For each character (left to right).
for (int i = 0; i < s.length(); i++) {
// Double the current value.
v = v << 1;
// See a `1`?
if (s.charAt(i) == '1') {
// Add 1.
v += 1;
}
}
// Prove it works by printing it in binary too.
System.out.println("v = " + v + " " + Integer.toString(v, 2) + "b");
}
更一般地,对于任何基础:
public int base(String s, int base) {
// Start at 0.
int v = 0;
// For each character (left to right).
for (int i = 0; i < s.length(); i++) {
// Multiply the current value by the base.
v *= base;
// Add the correct value - won't work for base > 10
v += s.charAt(i) - '0';
}
return v;
}
奇怪的downvote ??? – OldCurmudgeon
这不是什么'parseInt函数()'一样。 –
@ScottHunter'parseInt(String,2)'会将一个二进制字符串转换为一个'int'。 –
“为一个int”,而不是“...到一个小数” –