2015-12-24 32 views
-6

任何人都可以向我展示将二进制字符串转换为小数的算法,以及用于存储输出的首选方法吗?我知道如何通过Integer.parseInt()来预制转换,但我真的很想看到它的算法。在Java中将二进制字符串转换为十进制的算法

+1

这不是什么'parseInt函数()'一样。 –

+1

@ScottHunter'parseInt(String,2)'会将一个二进制字符串转换为一个'int'。 –

+0

“为一个int”,而不是“...到一个小数” –

回答

1

在每个字符上循环累积一个值。每次将值乘以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; 
} 
+0

奇怪的downvote ??? – OldCurmudgeon

相关问题