首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java中将十进制转换为二进制

在java中将十进制转换为二进制
EN

Stack Overflow用户
提问于 2012-04-25 11:00:13
回答 8查看 9.8K关注 0票数 4

我在获取二进制文件时遇到了麻烦。我不知道出了什么问题。二进制数总是以胡言乱语结束。还有一些部分,比如new int[31]的东西是来自HW的,但我无法打印出真正的二进制文件。

代码语言:javascript
运行
复制
public class DectoBinary {
    public static void main(String[]args) {
        Scanner CONSOLE = new Scanner(System.in);
        System.out.print("Please enter a nonnegative integer: ");
        int value = CONSOLE.nextInt();
        while (value < 0) {
            System.out.print("number outside range.");
            System.out.print
                ("Please enter a nonnegative interger more than 0: ");
            value = CONSOLE.nextInt();
        }
        int[] intArray = new int[31];
        decimalToBinary(value, intArray);
        System.out.println(value + "" + intArray);
    }
    public static int[] decimalToBinary(int value, int[]intArray) {
        int i = 0;
        while (value != 0) {
            if (value % 2 == 1)
                intArray[i] = 1;

            else
                intArray[i] = 0;

            value /= 2;
            i++;
        }
        return intArray;
    }
}
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-04-25 11:05:26

我认为错误在这一行上:

代码语言:javascript
运行
复制
System.out.println(value + "" + intArray);

您不能像这样打印整数数组:您应该将其转换为字符串,或者编写一个逐位打印数组的循环:

代码语言:javascript
运行
复制
for (int i : inrArray) {
    System.out.print(intArray[i]);
}
System.out.println();

您也不需要传入输出数组:您可以在函数内部创建它。

代码语言:javascript
运行
复制
public static int[] decimalToBinary(int value) {
    int count = 1;
    int tmp = value;
    while (tmp != 0) {
        tmp /= 2;
        count++;
    }
    int[] intArray = new int[count];
    // Do the conversion here...
    return intArray;
}
票数 3
EN

Stack Overflow用户

发布于 2012-04-25 11:05:15

您可以简单地使用Integer.toBinaryString(int)

票数 1
EN

Stack Overflow用户

发布于 2012-04-25 11:41:27

实际上,这是使用BigInteger在java中获取二进制数的一种非常简单的方法。

代码语言:javascript
运行
复制
public String dectoBin(int num){
    String s = ""+num;
    BigInteger bi = new BigInteger(s);
    String bin = bi.toString(2);
    return bin
}

BigInteger.toString(2)返回存储在圆括号内指定的数字基数上的数字。是绕过这个问题的一个非常简单的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10308769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档