在Java中将二进制字符串转换为正数,主要有以下两种方法:
一、使用 `Integer.parseInt()` 方法
这是最简单直接的方法,适用于二进制字符串表示的正数或负数(需注意指定基数为2)。
```java
public class BinaryToDecimal {
public static void main(String[] args) {
String binaryString = "101010"; // 二进制表示的正数
int decimal = Integer.parseInt(binaryString, 2); // 转换为十进制
System.out.println("Decimal number: " + decimal); // 输出 42
}
}
```
二、按权展开法(手动转换)
适用于需要自定义转换逻辑的场景,支持处理二进制中的小数点。
```java
public class BinToTen1 {
public static double BinToTen1(String binary) {
int index = binary.indexOf('.');
double ten = 0;
double integer = 0;
double decimal = 0;
if (index == -1) {
// 无小数部分
for (int i = 0; i < binary.length(); i++) {
ten += (binary.charAt(i) - '0') * Math.pow(2, -(i + binary.length() - 1));
}
} else {
// 有整数和小数部分
for (int i = 0; i < index; i++) {
integer += (binary.charAt(i) - '0') * Math.pow(2, -(i + 1));
}
for (int i = index + 1; i < binary.length(); i++) {
decimal += (binary.charAt(i) - '0') * Math.pow(2, -(i - index - 1));
}
}
return integer + decimal;
}
public static void main(String[] args) {
String binaryString = "1010.10"; // 二进制表示的正数(含小数)
double decimal = BinToTen1(binaryString);
System.out.println("Decimal number: " + decimal); // 输出 42.5
}
}
```
说明
`Integer.parseInt()` 方法 适用于二进制字符串,无论其表示正数还是负数,通过指定基数2即可正确转换。
按权展开法
- 整数部分: 从右至左,按位权展开计算(如 `1010` → `0×2^0 + 1×2^1 + 0×2^2 + 1×2^3 = 10`)。 - 小数部分
以上方法均能正确处理二进制字符串转换为十进制正数,选择时可根据需求(如是否含小数)及代码简洁性决定。