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

方法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)); // 显示无符号值
}
注意事项
- Java 的 byte 类型是有符号的(-128 到 127),如果需要无符号值(0 到 255),可以使用
b & 0xFF来转换 - 确保输入的二进制字符串只包含 '0' 和 '1'
- 对于超过 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转换的不同实现方式,可以根据具体需求选择最适合的方案。

