如何将二进制字符串转换为
String c = "110010"; // as binary
如何在Java中将十六进制转换为十进制?(示例中期望的结果为50)
如何将二进制字符串转换为
String c = "110010"; // as binary
如何在Java中将十六进制转换为十进制?(示例中期望的结果为50)
使用Integer.parseInt
(请参见javadoc),它将您的String
转换为使用二进制的int
:
int decimalValue = Integer.parseInt(c, 2);
public static int integerfrmbinary(String str){
double j=0;
for(int i=0;i<str.length();i++){
if(str.charAt(i)== '1'){
j=j+ Math.pow(2,str.length()-1-i);
}
}
return (int) j;
}
这段代码是我手写的。你也可以像上面提到的那样使用parseInt。 该函数将给出与二进制字符串对应的十进制值:)
int i = Integer.parseInt(c, 2);
int num = Integer.parseInt("binaryString",2);
在考虑小数精度时,必须限制位串长度。无论如何,使用BigDecimal是一个不错的选择。
public BigDecimal bitStringToBigDecimal(String bitStr){
BigDecimal sum = new BigDecimal("0");
BigDecimal base = new BigDecimal(2);
BigDecimal temp;
for(int i=0;i<bitStr.length();i++){
if(bitStr.charAt(i)== '1'){
int exponent= bitStr.length()-1-i;
temp=base.pow(exponent);
sum=sum.add(temp);
}
}
return sum;
}
public static Long binToDec(String bin) {
long dec = 0L;
long pow = 1L;
for (int i = (bin.length() - 1); i >= 0; i--) {
char c = bin.charAt(i);
dec = dec + (Long.parseLong(c + "") * pow);
pow = pow * 2;
}
return dec;
}
long num = Long.parseLong("101110111",2);
测试一下,你会发现代码中有一行包含Scan.S()的内容。这个仅用于储存数据(字符串)。所以尝试一下:
PS:别忘了将文件保存为bindec。
import java.io.*;
class Scan
{
public static String S()
{
String x;
char c;
boolean erreur;
do
{
x = "";
erreur = false;
try
{
while((c = (char)System.in.read()) != '\n')
{
if (c != '\r')
{
x += c;
}
}
}
catch(IOException e)
{
System.out.print(" > enter String : ");
erreur = true;
}
} while(erreur);
return x;
}
public class bindec{
public static void main (String[] args) {
int b=0;
String a;
System.out.println("bin: ");
a = Lire.S();
int j=a.length()-1;
for(int i=0;i<a.length() ;i++ ){
if(a.charAt(i)=='1'){
b += Math.pow(2,j);
}
if(a.charAt(i)=='0'){
b+=0;
}
j=j-1;
}
System.out.println("dec: "+b);
}
}
23456789
。1011001011110110000010101
。字符串长度 - 1
(假设没有前导零),然后将所有系数放在右边:echo '1011001011110110000010101' |
mawk 'function __(_) {
print; gsub(/./, "2*(", _)
return substr(_, 4)
}
$!_ = __($_) $!_' FS= OFS=')+' | gtee >( gcat -b | lgp3 >&2; ) | bc
23456789
1011001011110110000010101
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(
+1)+0)+1)+1)+0)+0)+1)+0)+1)+1)+1)+1)+0)+1)+1)+0)+0)+0)+0)+0)+1)+0)+1)+0)+1
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(
1) )+1)+1) ) )+1) )+1)+1)+1)+1) )+1)+1) ) ) ) ) )+1) )+1) )+1
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1)+1)))+1))+1)+1)+1)+1)
)+1)+1) ))) ))+1) )+1) )+1
2^24 + 2^22 + 2^21 + 2^18 + 2^16 + 2^15 + 2^14 + 2^13 + 2^11 + 2^10 + 2^4 + 2^2
1*2^24 + 0*2^23 + 1*2^22 + 1*2^21 + 0*2^20 + 0*2^19 +
1*2^18 + 0*2^17 + 1*2^16 + 1*2^15 + 1*2^14 + 1*2^13 +
0*2^12 + 1*2^11 + 1*2^10 + 0*2^ 9 + 0*2^ 8 + 0*2^ 7 +
0*2^ 6 + 0*2^ 5 + 1*2^ 4 + 0*2^ 3 + 1*2^ 2 + 0*2 + 1
10*(10*(10*(10*(10*(10*(10*(
2)+ 3)+ 4)+ 5)+ 6)+ 7)+ 8)+ 9
10*(10*(10*(10*(10*(10*(10*(2)+3)+4)+5)+6)+7)+8)+9
2*10^7 + 3*10^6 + 4*10^5 + 5*10^4 +
6*10^3 + 7*10^2 + 8*10 + 9
2*10^7 + 3*10^6 + 4*10^5 + 5*10^4 + 6*10^3 + 7*10^2 + 8*10 + 9
2*10^7+3*10^6+4*10^5+5*10^4+6*10^3+7*10^2+8*10+9