将整数转换为二进制字符串
使用 Integer.toBinaryString() 或 Long.toBinaryString() 方法:
int num = 10; String binaryStr = Integer.toBinaryString(num); System.out.println(binaryStr); // 输出: 1010
补零处理:
如果需要固定长度(如 8 位),可以使用 String.format():
String paddedBinary = String.format("%8s", binaryStr).replace(' ', '0');
System.out.println(paddedBinary); // 输出: 00001010
将二进制字符串转换为整数
使用 Integer.parseInt() 或 Long.parseLong(),并指定 radix 为 2:
String binaryStr = "1010"; int num = Integer.parseInt(binaryStr, 2); System.out.println(num); // 输出: 10
二进制字符串的位运算
直接对二进制字符串进行位运算需要先转换为整数,运算后再转回字符串:
String bin1 = "1100"; // 12 String bin2 = "1010"; // 10 int num1 = Integer.parseInt(bin1, 2); int num2 = Integer.parseInt(bin2, 2); // 按位与 String andResult = Integer.toBinaryString(num1 & num2); System.out.println(andResult); // 输出: 1000 (8) // 按位或 String orResult = Integer.toBinaryString(num1 | num2); System.out.println(orResult); // 输出: 1110 (14) // 按位异或 String xorResult = Integer.toBinaryString(num1 ^ num2); System.out.println(xorResult); // 输出: 0110 (6)
二进制字符串的拼接与分割
拼接可以直接使用 或 StringBuilder,分割则需按字符处理:
String bin1 = "1010";
String bin2 = "1100";
String combined = bin1 + bin2; // 输出: 10101100
// 按每 4 位分割
String longBin = "10101100";
List<String> chunks = new ArrayList<>();
for (int i = 0; i < longBin.length(); i += 4) {
chunks.add(longBin.substring(i, Math.min(i + 4, longBin.length())));
}
System.out.println(chunks); // 输出: [1010, 1100]
二进制字符串的校验
检查字符串是否为有效的二进制字符串:
String input = "10102";
boolean isValid = input.matches("[01]+");
System.out.println(isValid); // 输出: false(因为包含 '2')
二进制字符串与字节数组的转换
将二进制字符串转换为字节数组(每 8 位对应一个字节):
String binaryStr = "0100100001100101011011000110110001101111"; // "Hello" 的 ASCII 码
byte[] bytes = new byte[binaryStr.length() / 8];
for (int i = 0; i < bytes.length; i++) {
bytes[i] = (byte) Integer.parseInt(
binaryStr.substring(i * 8, (i + 1) * 8), 2);
}
System.out.println(new String(bytes)); // 输出: Hello
补码表示
处理负数的补码表示:
int negativeNum = -10; String binaryTwosComplement = Integer.toBinaryString(negativeNum); System.out.println(binaryTwosComplement); // 输出: 11111111111111111111111111110110(32位)
| 操作 | 方法示例 |
|---|---|
| 整数 → 二进制字符串 | Integer.toBinaryString(num) |
| 二进制字符串 → 整数 | Integer.parseInt(binStr, 2) |
| 补零 | String.format("%8s", binStr).replace(' ', '0') |
| 位运算 | 先转整数运算,再转回字符串 |
| 校验有效性 | binStr.matches("[01]+") |
| 字节数组转换 | 按每 8 位解析为 byte |
根据具体需求选择合适的方法组合使用即可。
