将字符串的一部分转换为 int 以从二进制转换为浮点数的最佳方法 JAVA
Best way to convert parts of a string to int to convert from binary to float JAVA
我正在编写一个程序,其中我有 9 位“0”和“1”的字符串转换为指数(获取每个索引并从右到左执行 2 ^ n)。
示例:["1","0","1"] = 2^2 + 0^1 + 2^0
我知道这是错误的,因为我收到了错误,但我很困惑该怎么做才能有效地计算它。
expoBefore = (strNum.charAt(9)) * 1 + (strNum.charAt(8)) * 2 + (strNum.charAt(7)) * 4 + (strNum.charAt(6)) * 8 + (strNum.charAt(5)) * 16 + (strNum.charAt(4)) * 32 + (strNum.charAt(3)) * 64 + (strNum.charAt(8)) * 128;
例如,对于我正在传递的字符串之一 [11111111],我希望它添加 1 * 2^0 + 1 * 2 ^1 + 1 * 2^2.....等
澄清编辑:
将由 0 和 1 组成的字符串转换为整数的更有效方法是什么?
你需要使用循环。
迭代二进制字符串。对于每个字符,如果该位已设置(其中 x 是该位的位置),则将 2^x 添加到累加器,否则,添加0.
String binary = "11111111";
int number = 0;
for(int i = binary.length() - 1; i >= 0; i--) {
char c = binary.charAt(i);
number += Integer.parseInt(c + "") * Math.pow(2, binary.length() - i - 1);
}
System.out.println(number); // prints 255
只需使用 for 循环并向下递增以对每个数字进行最小化
您正在尝试将一个字符的 ascii 值乘以一个整数。
您必须取这个字符的整数值,然后将它与另一个整数相乘。希望这有帮助。
String str = "111";
int x = Character.getNumericValue(str.charAt(0));
int y = Character.getNumericValue(str.charAt(1));
int z = Character.getNumericValue(str.charAt(2));
System.out.println(x + y + z);
输出:
3
在循环中使用Math.pow(2, i)
效率很低。
更快地保持以前的值并每次乘以 2(代码未经测试):
int ip = 1;
int sum = 0;
for ( int i = binary.length -1; i >= 0) {
if ( binary.charAt(i) == '1' ) {
sum += ip;
}
ip *= 2;
}
如果数字变大,您可能希望使用长整数。
此外,请务必检查 binary
是否仅包含零和一。
我正在编写一个程序,其中我有 9 位“0”和“1”的字符串转换为指数(获取每个索引并从右到左执行 2 ^ n)。
示例:["1","0","1"] = 2^2 + 0^1 + 2^0
我知道这是错误的,因为我收到了错误,但我很困惑该怎么做才能有效地计算它。
expoBefore = (strNum.charAt(9)) * 1 + (strNum.charAt(8)) * 2 + (strNum.charAt(7)) * 4 + (strNum.charAt(6)) * 8 + (strNum.charAt(5)) * 16 + (strNum.charAt(4)) * 32 + (strNum.charAt(3)) * 64 + (strNum.charAt(8)) * 128;
例如,对于我正在传递的字符串之一 [11111111],我希望它添加 1 * 2^0 + 1 * 2 ^1 + 1 * 2^2.....等
澄清编辑:
将由 0 和 1 组成的字符串转换为整数的更有效方法是什么?
你需要使用循环。
迭代二进制字符串。对于每个字符,如果该位已设置(其中 x 是该位的位置),则将 2^x 添加到累加器,否则,添加0.
String binary = "11111111";
int number = 0;
for(int i = binary.length() - 1; i >= 0; i--) {
char c = binary.charAt(i);
number += Integer.parseInt(c + "") * Math.pow(2, binary.length() - i - 1);
}
System.out.println(number); // prints 255
只需使用 for 循环并向下递增以对每个数字进行最小化
您正在尝试将一个字符的 ascii 值乘以一个整数。 您必须取这个字符的整数值,然后将它与另一个整数相乘。希望这有帮助。
String str = "111";
int x = Character.getNumericValue(str.charAt(0));
int y = Character.getNumericValue(str.charAt(1));
int z = Character.getNumericValue(str.charAt(2));
System.out.println(x + y + z);
输出: 3
在循环中使用Math.pow(2, i)
效率很低。
更快地保持以前的值并每次乘以 2(代码未经测试):
int ip = 1;
int sum = 0;
for ( int i = binary.length -1; i >= 0) {
if ( binary.charAt(i) == '1' ) {
sum += ip;
}
ip *= 2;
}
如果数字变大,您可能希望使用长整数。
此外,请务必检查 binary
是否仅包含零和一。