如何获取java中二进制字符串的设置位的所有位置?

时间:2015-04-01 06:26:15

标签: java string binary

例如,如果二进制字符串是10100010,则程序必须返回第1,第3和第7,即1的位置。

3 个答案:

答案 0 :(得分:2)

以下是您要查找的代码,请注意正则表达式从第零位开始。

String regex = "[1]"; 
String data = "10100010"; 
Matcher m = Pattern.compile(regex).matcher(data);
while(m.find())
{
System.out.println(m.group() + "  => " + (m.start()+1) );
}

答案 1 :(得分:0)

两个选项:

  1. 将其转换为整数/长(如果可能),然后每次移位一位并检查它是否为1.例如:

    String str = "10100010";
    Integer x = Integer.valueOf(str);
    int len = str.length();
    while (x != 0) {
        if (x & 0x1 == 1) {
            System.out.println(len);
        }
        len--;
        x >>= 1;
    }
    
  2. 扫描字符串by-index并检查其是否为'值是1:

    for (int i = 0; i < str.length(); i++) {
        if (str.chatAt(i) == '1') {
            //print
        }
    }
    

答案 2 :(得分:0)

 char[] str="10100010".toCharArray();
        for(int i=0;i<str.length;i++){
            if(str[i]=='1'){
                int setBit=1;
                setBit+=i;
                System.out.println(setBit+"th");
            }
        }