将 0 和 1 的字符串转换为字节
Convert Strings of 0 & 1 into bytes
我有两个字符串:
String a = "11111";
String b = "10001";
我想用 "&"
运算符进行按位比较。
最好的方法是什么?
使用基数为 2 的 parseLong
(您也可以使用字节和整数 类 中的类似函数,具体取决于字符串的最大大小):
long ba = parseLong(a, 2);
long bb = parseLong(b, 2);
long bc = ba & bb;
您可以使用 Integer.parseInt( String s, int radix) or 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;
- 首先,将每个二进制
String
转换为具有 Long.parseLong(s, 2)
的 long
值。此方法将使用基数 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);
}
我有两个字符串:
String a = "11111";
String b = "10001";
我想用 "&"
运算符进行按位比较。
最好的方法是什么?
使用基数为 2 的 parseLong
(您也可以使用字节和整数 类 中的类似函数,具体取决于字符串的最大大小):
long ba = parseLong(a, 2);
long bb = parseLong(b, 2);
long bc = ba & bb;
您可以使用 Integer.parseInt( String s, int radix) or 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;
- 首先,将每个二进制
String
转换为具有Long.parseLong(s, 2)
的long
值。此方法将使用基数 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);
}