杰瑞科技汇

Java byte数组如何高效转二进制?

Java 字节数组转二进制字符串

在Java中,将字节数组(byte[])转换为二进制字符串有几种常见方法,以下是几种实现方式:

Java byte数组如何高效转二进制?-图1
(图片来源网络,侵删)

方法1:使用Integer.toBinaryString()

public static String bytesToBinaryString(byte[] bytes) {
    StringBuilder sb = new StringBuilder();
    for (byte b : bytes) {
        // 使用0xFF确保无符号转换
        sb.append(String.format("%8s", Integer.toBinaryString(b & 0xFF)).replace(' ', '0'));
    }
    return sb.toString();
}

方法2:使用BigInteger

import java.math.BigInteger;
public static String bytesToBinaryString(byte[] bytes) {
    return new BigInteger(1, bytes).toString(2);
}

方法3:手动转换

public static String bytesToBinaryString(byte[] bytes) {
    StringBuilder sb = new StringBuilder();
    for (byte b : bytes) {
        sb.append((b & 0x80) == 0 ? "0" : "1");
        sb.append((b & 0x40) == 0 ? "0" : "1");
        sb.append((b & 0x20) == 0 ? "0" : "1");
        sb.append((b & 0x10) == 0 ? "0" : "1");
        sb.append((b & 0x08) == 0 ? "0" : "1");
        sb.append((b & 0x04) == 0 ? "0" : "1");
        sb.append((b & 0x02) == 0 ? "0" : "1");
        sb.append((b & 0x01) == 0 ? "0" : "1");
    }
    return sb.toString();
}

使用示例

public static void main(String[] args) {
    byte[] bytes = {0x12, 0x34, 0x56, 0x78};
    String binaryString = bytesToBinaryString(bytes);
    System.out.println(binaryString); // 输出: 00010010001101000101011001111000
}

注意事项

  1. Java中的byte是有符号的,范围是-128到127,所以需要使用& 0xFF进行无符号转换
  2. 方法1和方法3会确保每个字节转换为8位二进制,不足的前面补0
  3. 方法2可能会省略前导零,如果需要固定长度,可以额外处理
  4. 对于大数组,考虑使用StringBuilder而不是字符串拼接,以提高性能

选择哪种方法取决于你的具体需求,比如是否需要固定长度、性能要求等,方法1通常是平衡了可读性和性能的好选择。

Java byte数组如何高效转二进制?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇