如何转换二进制字符串,例如
String c = "110010"; // as binary
到Java中的十进制值? (示例中的预期结果是50)
答案 0 :(得分:83)
使用Integer.parseInt
(请参阅javadoc),使用基数2将您的String
转换为int
:
int decimalValue = Integer.parseInt(c, 2);
答案 1 :(得分:17)
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。 此函数将给出与二进制字符串对应的十进制值:)
答案 2 :(得分:12)
我认为您正在寻找Integer.parseInt。第二个参数采用基数,在本例中为2。
Integer.parseInt(c, 2)
答案 3 :(得分:6)
int i = Integer.parseInt(c, 2);
答案 4 :(得分:2)
int num = Integer.parseInt("binaryString",2);
答案 5 :(得分:1)
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);
答案 6 :(得分:1)
必须考虑小数精度,因此必须限制位串长度。无论如何,使用BigDecimal是一个不错的选择。
//creates a generic binary search tree class
public class BinarySearchTree<A> {
//the root of the node, which is the middle value
Node root;
//this constructor will add a node
public void addNode(A userNumber){
Node<A> newNode = Node<A>(A userNumber);
}//end addNode
public class Node<T>{
//this generic variable will become the user input either int or fraction
private T number;
//nodes that will become the left of right child of a parent node
Node<T> leftChild;
Node<T> rightChild;
//a node constructor that will take a generic input
Node(T number){
this.number = number;
}//end node constructor
}//end the Node class
}//end binary search tree
答案 7 :(得分:0)
public static void convertStringToDecimal(String binary)
{
int decimal=0;
int power=0;
while(binary.length()>0)
{
int temp = Integer.parseInt(binary.charAt((binary.length())-1)+"");
decimal+=temp*Math.pow(2, power++);
binary=binary.substring(0,binary.length()-1);
}
System.out.println(decimal);
}
答案 8 :(得分:0)
测试
import java.util.Scanner;
public class BinaryToDecimal{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int binaryNumber = 0;
int counter = 0;
int number = 0;
System.out.print("Input binary number: ");
binaryNumber = input.nextInt();
//it's going to stop when the binaryNumber/10 is less than 0
//example:
//binaryNumber = 11/10. The result value is 1 when you do the next
//operation 1/10 . The result value is 0
while(binaryNumber != 0)
{
//Obtaining the remainder of the division and multiplying it
//with the number raised to two
//adding it up with the previous result
number += ((binaryNumber % 10)) * Math.pow(2,counter);
binaryNumber /= 10; //removing one digit from the binary number
//Increasing counter 2^0, 2^1, 2^2, 2^3.....
counter++;
}
System.out.println("Decimal number : " + number);
}
}
答案 9 :(得分:0)
private static int convertBinaryToDecimal(String strOfBinary){
int flag = 1, binary=0;
char binaryOne = '1';
char[] charArray = strOfBinary.toCharArray();
for(int i=charArray.length-1;i>=0;i--){
if(charArray[i] == binaryOne){
binary+=flag;
}
flag*=2;
}
return binary;
}
答案 10 :(得分:0)
public static void main(String[] args) {
java.util.Scanner scan = new java.util.Scanner(System.in);
long decimalValue = 0;
System.out.println("Please enter a positive binary number.(Only 1s and 0s)");
//This reads the input as a String and splits each symbol into
//array list
String element = scan.nextLine();
String[] array = element.split("");
//This assigns the length to integer arrys based on actual number of
//symbols entered
int[] numberSplit = new int[array.length];
int position = array.length - 1; //set beginning position to the end of array
//This turns String array into Integer array
for (int i = 0; i < array.length; i++) {
numberSplit[i] = Integer.parseInt(array[i]);
}
//This loop goes from last to first position of an array making
//calculation where power of 2 is the current loop instance number
for (int i = 0; i < array.length; i++) {
if (numberSplit[position] == 1) {
decimalValue = decimalValue + (long) Math.pow(2, i);
}
position--;
}
System.out.println(decimalValue);
main(null);
}
答案 11 :(得分:0)
import java.util.*;
public class BinaryToDecimal
{
public static void main()
{
Scanner sc=new Scanner(System.in);
System.out.println("enter the binary number");
double s=sc.nextDouble();
int c=0;
long s1=0;
while(s>0)
{
s1=s1+(long)(Math.pow(2,c)*(long)(s%10));
s=(long)s/10;
c++;
}
System.out.println("The respective decimal number is : "+s1);
}
}
答案 12 :(得分:0)
测试一下,你会发现代码中有一行包含 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);
}
}
答案 13 :(得分:0)
int base2(String bits) {
int ans = 0;
for (int i = bits.length() - 1, f = 1; i >= 0; i--) {
ans += f * (bits.charAt(i) - '0');
f <<= 1;
}
return ans;
}
答案 14 :(得分:0)