将字符串的一部分转换为int并将其从二进制转换为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的字符串转换为整数的更有效的方法是什么?

ABCEFGOPQ 回答:将字符串的一部分转换为int并将其从二进制转换为float的最佳方法JAVA

您正在尝试将字符的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

,

您需要使用循环。

遍历二进制字符串。对于每个字符,如果设置了该位(其中 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

How to convert binary to decimal

,

只需使用for循环并向下递增以最小化每个数字

,

在循环中使用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仅包含零和一。

本文链接:https://www.f2er.com/3163615.html

大家都在问