У меня есть две строки:Преобразование строк из 0 и 1 в байты
String a = "11111";
String b = "10001";
Я хотел бы сделать побитовое сравнение WIH "&"
оператора.
Какой был бы лучший способ сделать это?
У меня есть две строки:Преобразование строк из 0 и 1 в байты
String a = "11111";
String b = "10001";
Я хотел бы сделать побитовое сравнение WIH "&"
оператора.
Какой был бы лучший способ сделать это?
String
в long
значение с Long.parseLong(s, 2)
. Этот метод будет анализировать данную строку, используя радиус 2, что означает, что он должен интерпретировать строку как двоичную.&
по двум значениям long
.Long.toBinaryString(i)
.Вот пример код:
public static void main(String[] args) {
String a = "11111";
String b = "10001";
long la = Long.parseLong(a, 2);
long lb = Long.parseLong(b, 2);
long lc = la & lb;
String c = Long.toBinaryString(lc);
System.out.println(c); // prints 10001
}
Другим способом без использования примитива long
значения будет делать это вручную, обернув над цифрами и хранением &
результата их точки коды в StringBuilder
:
public static void main(String[] args) {
String a = "11111";
String b = "10001";
StringBuilder sb = new StringBuilder(a.length());
for (int i = 0; i < a.length(); i++) {
sb.appendCodePoint(a.codePointAt(i) & b.codePointAt(i));
}
String c = sb.toString();
System.out.println(c);
}
Использование parseLong
с десятичную 2 (вы также можете использовать аналогичные функции из Byte и классов Integer, в зависимости от максимального размера вами строки):
long ba = parseLong(a, 2);
long bb = parseLong(b, 2);
long bc = ba & bb;
Вы можете использовать либо Integer.parseInt(String s, int radix) или Long.parseLong(String s, int radix) ,
String a = "11111";
String b = "10001";
int ia = Integer.parseInt(a, 2);
int ib = Integer.parseInt(b, 2);
int c = ib & ic;