如何获取java中二进制字符串的设置位的所有位置?
how to get all the positions of the set bits of a binary string in java?
例如,如果二进制字符串是 10100010,那么程序必须 return 第 1、3 和 7,即 1 的位置。
以下是您要查找的代码,请注意正则表达式从第零位开始。
String regex = "[1]";
String data = "10100010";
Matcher m = Pattern.compile(regex).matcher(data);
while(m.find())
{
System.out.println(m.group() + " => " + (m.start()+1) );
}
两个选项:
将其转换为integer/long(如果可能)然后每次移动一位并检查它是否为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;
}
按索引扫描字符串并检查其值是否为 1:
for (int i = 0; i < str.length(); i++) {
if (str.chatAt(i) == '1') {
//print
}
}
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");
}
}
例如,如果二进制字符串是 10100010,那么程序必须 return 第 1、3 和 7,即 1 的位置。
以下是您要查找的代码,请注意正则表达式从第零位开始。
String regex = "[1]";
String data = "10100010";
Matcher m = Pattern.compile(regex).matcher(data);
while(m.find())
{
System.out.println(m.group() + " => " + (m.start()+1) );
}
两个选项:
将其转换为integer/long(如果可能)然后每次移动一位并检查它是否为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; }
按索引扫描字符串并检查其值是否为 1:
for (int i = 0; i < str.length(); i++) { if (str.chatAt(i) == '1') { //print } }
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");
}
}