杰瑞科技汇

java string 转二进制

方法 1:逐个字符转换为二进制

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

java string 转二进制-图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

说明

  1. Integer.toBinaryString(c) 将字符 c 转换为二进制字符串(如 'H'"1001000")。
  2. String.format("%8s", ...) 确保每个字符的二进制表示是 8位(不足补0)。
  3. 最终拼接所有字符的二进制字符串。

方法 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

说明

  1. str.getBytes() 将字符串转换为字节数组(UTF-8编码)。
  2. 通过 右移和按位与 操作,逐位提取字节的二进制值。
  3. 最终拼接所有字节的二进制字符串。

方法 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

说明

  1. getBytes(StandardCharsets.UTF_8) 指定编码方式(如 UTF-8、UTF-16)。
  2. BigInteger 可以处理任意长度的字节数组,并转换为二进制字符串。

方法 适用场景 特点
逐个字符转换 简单字符串(ASCII) 代码直观,适合学习
getBytes() + 按位操作 字节级控制(如UTF-8) 高效,适合处理字节数据
BigInteger 复杂编码(如UTF-16) 灵活,支持任意长度

选择合适的方法取决于你的需求:

  • 如果只是处理 ASCII 字符,方法1 最简单。
  • 如果需要处理 UTF-8 或其他编码,方法2方法3 更合适。
java string 转二进制-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇