杰瑞科技汇

java 二进制 string

将整数转换为二进制字符串

使用 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

根据具体需求选择合适的方法组合使用即可。

分享:
扫描分享到社交APP
上一篇
下一篇