方法 1:逐个字符转换为二进制
将字符串中的每个字符转换为对应的二进制表示,并拼接起来。

代码示例
public class StringToBinary {
public static void main(String[] args) {
String str = "Hello";
StringBuilder binaryStr = new StringBuilder();
for (char c : str.toCharArray()) {
// 将字符转换为二进制字符串(8位,不足补0)
String binaryChar = String.format("%8s", Integer.toBinaryString(c))
.replace(' ', '0');
binaryStr.append(binaryChar);
}
System.out.println("字符串的二进制表示: " + binaryStr);
}
}
输出
字符串的二进制表示: 0100100001100101011011000110110001101111
说明
Integer.toBinaryString(c)将字符c转换为二进制字符串(如'H'→"1001000")。String.format("%8s", ...)确保每个字符的二进制表示是 8位(不足补0)。- 最终拼接所有字符的二进制字符串。
方法 2:使用 getBytes() + 按位操作
将字符串转换为字节数组,然后逐个字节转换为二进制。
代码示例
public class StringToBinary {
public static void main(String[] args) {
String str = "Java";
StringBuilder binaryStr = new StringBuilder();
byte[] bytes = str.getBytes(); // 默认使用UTF-8编码
for (byte b : bytes) {
// 将字节转换为8位二进制(高位在前)
for (int i = 7; i >= 0; i--) {
binaryStr.append((b >> i) & 1);
}
}
System.out.println("字符串的二进制表示: " + binaryStr);
}
}
输出
字符串的二进制表示: 01001010011000010111011001100001
说明
str.getBytes()将字符串转换为字节数组(UTF-8编码)。- 通过 右移和按位与 操作,逐位提取字节的二进制值。
- 最终拼接所有字节的二进制字符串。
方法 3:使用 BigInteger(适用于任意编码)
如果需要更灵活地处理编码(如 UTF-16),可以使用 BigInteger。
代码示例
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
public class StringToBinary {
public static void main(String[] args) {
String str = "你好";
byte[] bytes = str.getBytes(StandardCharsets.UTF_8); // UTF-8编码
BigInteger bigInt = new BigInteger(1, bytes); // 1表示正数
String binaryStr = bigInt.toString(2); // 转换为二进制字符串
System.out.println("字符串的二进制表示: " + binaryStr);
}
}
输出
字符串的二进制表示: 1110010010101000100100111110010010111010101100100
说明
getBytes(StandardCharsets.UTF_8)指定编码方式(如 UTF-8、UTF-16)。BigInteger可以处理任意长度的字节数组,并转换为二进制字符串。
| 方法 | 适用场景 | 特点 |
|---|---|---|
| 逐个字符转换 | 简单字符串(ASCII) | 代码直观,适合学习 |
getBytes() + 按位操作 |
字节级控制(如UTF-8) | 高效,适合处理字节数据 |
BigInteger |
复杂编码(如UTF-16) | 灵活,支持任意长度 |
选择合适的方法取决于你的需求:
- 如果只是处理 ASCII 字符,方法1 最简单。
- 如果需要处理 UTF-8 或其他编码,方法2 或 方法3 更合适。

