杰瑞科技汇

java byte 转 bit

Java 中 byte 转 bit 的方法

在 Java 中,将 byte 转换为 bit 有多种方法,以下是几种常见的实现方式:

方法1:使用位运算

public static String byteToBits(byte b) {
    StringBuilder sb = new StringBuilder(8);
    for (int i = 7; i >= 0; i--) {
        sb.append((b >> i) & 1);
    }
    return sb.toString();
}
// 使用示例
byte value = (byte) 0xAB; // 二进制: 10101011
String bits = byteToBits(value);
System.out.println(bits); // 输出: 10101011

方法2:使用 Integer.toBinaryString

public static String byteToBits(byte b) {
    // 将byte转换为无符号整数(0-255)
    int unsigned = b & 0xFF;
    String binaryStr = Integer.toBinaryString(unsigned);
    // 补前导零到8位
    return String.format("%8s", binaryStr).replace(' ', '0');
}
// 使用示例
byte value = (byte) 0xAB;
String bits = byteToBits(value);
System.out.println(bits); // 输出: 10101011

方法3:使用 BitSet

import java.util.BitSet;
public static String byteToBits(byte b) {
    BitSet bitSet = BitSet.valueOf(new byte[]{b});
    StringBuilder sb = new StringBuilder(8);
    for (int i = 0; i < 8; i++) {
        sb.append(bitSet.get(i) ? '1' : '0');
    }
    return sb.toString();
}
// 使用示例
byte value = (byte) 0xAB;
String bits = byteToBits(value);
System.out.println(bits); // 输出: 10101011

方法4:使用预定义的查找表

private static final String[] BYTE_TO_BITS = {
    "00000000", "00000001", "00000010", "00000011",
    "00000100", "00000101", "00000110", "00000111",
    "00001000", "00001001", "00001010", "00001011",
    "00001100", "00001101", "00001110", "00001111",
    "00010000", "00010001", "00010010", "00010011",
    "00010100", "00010101", "00010110", "00010111",
    "00011000", "00011001", "00011010", "00011011",
    "00011100", "00011101", "00011110", "00011111",
    "00100000", "00100001", "00100010", "00100011",
    "00100100", "00100101", "00100110", "00100111",
    "00101000", "00101001", "00101010", "00101011",
    "00101100", "00101101", "00101110", "00101111",
    "00110000", "00110001", "00110010", "00110011",
    "00110100", "00110101", "00110110", "00110111",
    "00111000", "00111001", "00111010", "00111011",
    "00111100", "00111101", "00111110", "00111111",
    "01000000", "01000001", "01000010", "01000011",
    "01000100", "01000101", "01000110", "01000111",
    "01001000", "01001001", "01001010", "01001011",
    "01001100", "01001101", "01001110", "01001111",
    "01010000", "01010001", "01010010", "01010011",
    "01010100", "01010101", "01010110", "01010111",
    "01011000", "01011001", "01011010", "01011011",
    "01011100", "01011101", "01011110", "01011111",
    "01100000", "01100001", "01100010", "01100011",
    "01100100", "01100101", "01100110", "01100111",
    "01101000", "01101001", "01101010", "01101011",
    "01101100", "01101101", "01101110", "01101111",
    "01110000", "01110001", "01110010", "01110011",
    "01110100", "01110101", "01110110", "01110111",
    "01111000", "01111001", "01111010", "01111011",
    "01111100", "01111101", "01111110", "01111111",
    "10000000", "10000001", "10000010", "10000011",
    "10000100", "10000101", "10000110", "10000111",
    "10001000", "10001001", "10001010", "10001011",
    "10001100", "10001101", "10001110", "10001111",
    "10010000", "10010001", "10010010", "10010011",
    "10010100", "10010101", "10010110", "10010111",
    "10011000", "10011001", "10011010", "10011011",
    "10011100", "10011101", "10011110", "10011111",
    "10100000", "10100001", "10100010", "10100011",
    "10100100", "10100101", "10100110", "10100111",
    "10101000", "10101001", "10101010", "10101011",
    "10101100", "10101101", "10101110", "10101111",
    "10110000", "10110001", "10110010", "10110011",
    "10110100", "10110101", "10110110", "10110111",
    "10111000", "10111001", "10111010", "10111011",
    "10111100", "10111101", "10111110", "10111111",
    "11000000", "11000001", "11000010", "11000011",
    "11000100", "11000101", "11000110", "11000111",
    "11001000", "11001001", "11001010", "11001011",
    "11001100", "11001101", "11001110", "11001111",
    "11010000", "11010001", "11010010", "11010011",
    "11010100", "11010101", "11010110", "11010111",
    "11011000", "11011001", "11011010", "11011011",
    "11011100", "11011101", "11011110", "11011111",
    "11100000", "11100001", "11100010", "11100011",
    "11100100", "11100101", "11100110", "11100111",
    "11101000", "11101001", "11101010", "11101011",
    "11101100", "11101101", "11101110", "11101111",
    "11110000", "11110001", "11110010", "11110011",
    "11110100", "11110101", "11110110", "11110111",
    "11111000", "11111001", "11111010", "11111011",
    "11111100", "11111101", "11111110", "11111111"
};
public static String byteToBits(byte b) {
    return BYTE_TO_BITS[b & 0xFF];
}

注意事项

  1. Java 中的 byte 是有符号的,范围是 -128 到 127,当转换为 bit 表示时,通常需要将其视为无符号值(0-255)。
  2. 对于负数,Java 使用二进制补码表示,直接转换会得到补码形式。
  3. 方法1和方法2是最常用的,方法4在需要高性能时可以考虑。

选择哪种方法取决于你的具体需求,如性能要求、代码简洁性等。

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