杰瑞科技汇

Java字符串如何高效转二进制?

在Java中,将字符串转换为二进制表示通常涉及以下步骤:

  1. 将字符串转换为字节数组(使用指定编码,如UTF-8)。
  2. 将每个字节转换为8位二进制字符串。

以下是几种实现方式:


方法1:逐字节转换(推荐)

public class StringToBinary {
    public static void main(String[] args) {
        String str = "Hello";
        String binaryStr = stringToBinary(str);
        System.out.println("二进制表示: " + binaryStr);
    }
    public static String stringToBinary(String str) {
        StringBuilder binary = new StringBuilder();
        for (char c : str.toCharArray()) {
            // 将字符转换为字节(UTF-8编码),然后转换为二进制
            String binaryChar = String.format("%8s", Integer.toBinaryString(c & 0xFF))
                    .replace(' ', '0');
            binary.append(binaryChar);
        }
        return binary.toString();
    }
}

输出示例:

二进制表示: 0100100001100101011011000110110001101111

方法2:使用getBytes() + Integer.toBinaryString()

public class StringToBinary {
    public static void main(String[] args) {
        String str = "Java";
        byte[] bytes = str.getBytes(StandardCharsets.UTF_8); // 指定编码
        StringBuilder binary = new StringBuilder();
        for (byte b : bytes) {
            binary.append(String.format("%8s", Integer.toBinaryString(b & 0xFF))
                    .replace(' ', '0'));
        }
        System.out.println("二进制表示: " + binary);
    }
}

输出示例:

二进制表示: 01001010011000010111011001100001

方法3:按位操作(更底层)

public class StringToBinary {
    public static void main(String[] args) {
        String str = "A";
        byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
        StringBuilder binary = new StringBuilder();
        for (byte b : bytes) {
            for (int i = 7; i >= 0; i--) {
                binary.append((b >> i) & 1);
            }
        }
        System.out.println("二进制表示: " + binary);
    }
}

输出示例:

二进制表示: 01000001

注意事项:

  1. 编码问题:确保使用正确的字符编码(如UTF-8),否则可能导致乱码或错误。
  2. 补码处理byte在Java中是带符号的,通过& 0xFF将其转换为无符号整数。
  3. 前导零Integer.toBinaryString()不会保留前导零,需用String.format()补全。

反向操作(二进制转字符串)

如果需要将二进制字符串转回原字符串:

public static String binaryToString(String binaryStr) {
    StringBuilder str = new StringBuilder();
    for (int i = 0; i < binaryStr.length(); i += 8) {
        String byteStr = binaryStr.substring(i, i + 8);
        char c = (char) Integer.parseInt(byteStr, 2);
        str.append(c);
    }
    return str.toString();
}

  • 推荐方法:使用getBytes(StandardCharsets.UTF_8) + String.format(),代码简洁且可读性强。
  • 适用场景:数据传输、加密、低级操作等需要二进制表示的场景。
分享:
扫描分享到社交APP
上一篇
下一篇