杰瑞科技汇

Java二进制字符串如何转byte?

Java 二进制字符串转 byte

在 Java 中,将二进制字符串(如 "10110010")转换为 byte 类型有几种方法,以下是几种常见的实现方式:

Java二进制字符串如何转byte?-图1
(图片来源网络,侵删)

方法1:使用 Integer.parseInt

public static byte binaryStringToByte(String binaryStr) {
    // 确保字符串长度不超过8位
    if (binaryStr.length() > 8) {
        throw new IllegalArgumentException("Binary string must be 8 bits or less");
    }
    // 解析为整数,然后转换为byte
    int value = Integer.parseInt(binaryStr, 2);
    return (byte) value;
}

方法2:使用位运算

public static byte binaryStringToByte(String binaryStr) {
    byte result = 0;
    for (int i = 0; i < binaryStr.length(); i++) {
        char c = binaryStr.charAt(i);
        if (c == '1') {
            result |= (1 << (binaryStr.length() - 1 - i));
        }
    }
    return result;
}

方法3:使用 BigInteger(适用于任意长度的二进制字符串)

import java.math.BigInteger;
public static byte binaryStringToByte(String binaryStr) {
    BigInteger bigInt = new BigInteger(binaryStr, 2);
    return bigInt.byteValue();
}

示例使用

public static void main(String[] args) {
    String binaryStr = "10110010";
    byte b = binaryStringToByte(binaryStr);
    System.out.println("Binary: " + binaryStr + " -> Byte: " + b);
    System.out.println("As unsigned: " + (b & 0xFF)); // 显示无符号值
}

注意事项

  1. Java 的 byte 类型是有符号的(-128 到 127),如果需要无符号值(0 到 255),可以使用 b & 0xFF 来转换
  2. 确保输入的二进制字符串只包含 '0' 和 '1'
  3. 对于超过 8 位的二进制字符串,方法1和方法2会抛出异常或截断高位,而方法3会返回最低8位

处理多位二进制字符串

如果要处理超过8位的二进制字符串并转换为多个byte:

public static byte[] binaryStringToBytes(String binaryStr) {
    // 补全到8的倍数
    while (binaryStr.length() % 8 != 0) {
        binaryStr = "0" + binaryStr;
    }
    byte[] bytes = new byte[binaryStr.length() / 8];
    for (int i = 0; i < bytes.length; i++) {
        String byteStr = binaryStr.substring(i * 8, (i + 1) * 8);
        bytes[i] = binaryStringToByte(byteStr);
    }
    return bytes;
}

这些方法提供了从二进制字符串到byte转换的不同实现方式,可以根据具体需求选择最适合的方案。

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