当前位置: 首页 > 知识库问答 >
问题:

如何将二进制数转换成十进制数?[闭门]

徐德海
2023-03-14

我正试图编写一个程序,将二进制数字转换成相应的十进制值。虽然错误报告有效,但我似乎在这里得到了与输出相同的二进制数。fIdx是一种正向扫描仪,不进行任何计算。请帮忙!

import java.util.Scanner;
public class Bin2Dec {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String inStr;
        int inStrLen, decimal=0;
        boolean isValid;
        
        Scanner in = new Scanner (System.in);
        
        System.out.println("Enter a Binary string: ");
        inStr = in.next();
        inStrLen= inStr.length();
        in.close();
        
        
        isValid =true;
        for (int i=0; i < inStrLen; i++) {
            char inChar = inStr.charAt(i);
            
            if (!(inChar =='1' || inChar== '0')) {
                isValid=false;
                break;
            }       
                
        }   
        int fIdx=0, bIdx=inStrLen -1;
        while(fIdx <bIdx){
            if (inStr.charAt(++fIdx) =='1') {
                decimal += 2^fIdx;
            }
        }
        
            System.out.printf(!isValid?"error: invalid binary string " + inStr:"The equivalent decimal for binary " + 
            inStr ," is :%d" + decimal);
    }

}

共有2个答案

颜嘉誉
2023-03-14

你可以这样做:

    public static String convert_binary_to_string(String binary_string) 
{
    StringBuilder sb = new StringBuilder();
    Arrays.stream(binary_string.split("(?<=\\G.{8})")).forEach((String s) -> {
        sb.append( Integer.parseInt(s, 2));
    });
    return sb.toString();
}
public static void main(String[] args)
{
    System.out.println(convert_binary_to_string("0011001"));
}

您可以从用户输入中读取二进制值,在调用convert_binary_to_string之前在main方法中添加检查,然后在一切正常的情况下调用该方法。

吴浩博
2023-03-14

你犯了几个错误:

  1. 由于您正在预减量bIdx,初始值需要是inStrLen
int fIdx=0, bIdx=inStrLen;
while(bIdx > 0){
    if (inStr.charAt(--bIdx) =='1') {
        decimal += Math.pow(2, fIdx);
    }
    fIdx++;
}
       System.out.printf(!isValid? "Error: invalid binary string %s" :"The equivalent decimal for binary %s is: %d", inStr, decimal);

我曾经https://www.rapidtables.com/convert/number/binary-to-decimal.html验证答案。

示例运行:

Enter a Binary string: 
11011010
The equivalent decimal for binary 11011010 is: 218
Enter a Binary string: 
fdgdf
Error: invalid binary string fdgdf

此外,这是评估inStr

boolean isValid = true;
String regex = "^[0-1]+$";
if (!inStr.matches(regex)) {
    isValid = false;
}
 类似资料:
  • 我需要写一个函数,将二进制分数转换成十进制分数,例如 我所做的:我在R包中搜索相关函数: 我在SOF搜索,发现以下内容: 0.001是: 所以,像内积的总和似乎完成了这个问题,我不知道如何在一般情况下做到这一点。 javascript案例: 如何将二进制分数转换为十进制分数?如何将二进制分数转换为十进制lisp大小写: 将分数从十进制转换为二进制

  • 在你学习计算机的过程中,你可能已经接触了二进制。二进制在计算机科学中是很重要的,因为存储在计算机内的所有值都是以 0 和 1 存储的。如果没有能力在二进制数和普通字符串之间转换,我们与计算机之间的交互非常棘手。 整数值是常见的数据项。他们一直用于计算机程序和计算。我们在数学课上学习它们,当然最后用十进制或者基数 10 来表示它们。十进制 $$233_{10}$$ 以及对应的二进制表示 $$1110

  • 问题内容: 如何在Swift中将Int转换为UInt8?例。我想将数字22转换为0b00010110 问题答案: 您可以使用带有参数的初始化程序将十进制值转换为人类可读的二进制 表示形式 : 如果您愿意,也可以很容易地用任意数量的零填充它: 斯威夫特5

  • 我正在尝试将数字从十进制值转换为其IEEE 752形式。例如: 我写了这个方法: 有个问题我解决不了,我再举个例子说清楚。 但是当数字为负数时,例如 我收到以下错误: 这意味着我的代码可以完美地处理正数(包括零),但如果是负数,代码就会崩溃。问题出在哪里? 笔记 我想我可以用这种方式解决我的问题 检查是否有一个字符At(0)等于1 如果是(numero.charAt(0)==1),则删除第一个字符

  • 我有一个二进制数,表示为11.1111111(与小数点类似)。点前有2位,点后有1024位。这是一个将e计算到高精度的练习,但现在我被困在如何将其转换为十进制的问题上。万一你们想知道号码,就在这里: 如何将其转换为2.718。。。。(小数点后应该有309位左右)我不能简单地将每一位乘以2^x,因为一段时间后,数字2^x将=0,即使使用双精度浮点。我使用的是Visual Basic,所以我不确定是否

  • 我想知道如何将舞蹈方法的十进制结果包含到灯光方法中。例如,在这个程序中,如果我输入5F,十进制结果将是95。我希望95在light方法中显示为静态int变量,以便转换为二进制数。如果你能告诉我如何将十六进制数限制在2位数以内,那也会很有帮助。感谢阅读! } }