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

如何将一大串整数转换成二进制?

尉迟鑫鹏
2023-03-14

[编辑]

如果已经在不同的线程中回答,请道歉。我在最近的一次采访中被问到这个问题。给定一大串整数(

共有3个答案

杨彦君
2023-03-14

我开始思考这个问题,这是我的解决方案。我能够验证10位数长的数字字符串的输出,但不能验证程序中使用的字符串。如果有人能验证并告诉我解决方案是否正确,那就太好了。此外,该解决方案尚未优化,因此请随时提出修改建议:

public class BinaryString {
    String finArr = "";

    public static void main(String[] args) {

        String num = "37489237892374892734872398479827498238932787";
        BinaryString bs = new BinaryString();
        bs.getBinaryValue(num);
    }

    void getBinaryValue(String num) {

        String quo = getBin(num);

        if (!quo.equals("1")) {
            getBinaryValue(quo);
        } else {
            finArr = quo + finArr;
            System.out.println(" Final Binary Value=" + finArr);
            return;
        }
    }

    String getBin(String num) {

        int[] numArr = new int[num.length()];
        for (int i = 0; i < num.length(); i++) {
            numArr[i] = Character.getNumericValue(num.charAt(i));
        }
        int p = 0;
        String quo = "";
        int rem = numArr[0];

        for (int i = 0; i < numArr.length; i++) {

            p = rem / 2;
            if (p != 0) {
                quo = quo + p;
            } else if (p == 0 && i > 0) {
                quo = quo + p;
            }

            if ((i + 1) != numArr.length) {
                rem = numArr[i] % 2 * 10 + numArr[i + 1];
            } else {
                rem = rem % 2;
                break;
            }

        }

        finArr = Integer.toString(rem) + finArr;
        return quo;

    }

}

输出:

最终二进制值=1101011100101011111111110100011101011000010111011110010000001011111111001011111111111111011011011011010011100111011011001000101111111111111111111111111101101101101101110011101100111101101101101101101101101100111

穆招
2023-03-14

布雷特的方法应该行得通。但是在不允许使用任何外部库的情况下,您可以将字符串视为数字数组,并对其执行长除法。所以你重复地把这个数字除以2,直到剩下0或1。您可能需要编写自己的方法来对数字数组进行除法(处理剩余部分和剩余部分),但它应该有一个相当好的运行时间。

这里有一个例子:假设你有163878712638127812737637876347236482字符串。将其转换为int数组(如果内存是一个问题,则转换为短数组)。执行长除法2,将结果保留在一个单独的数组中,并跟踪余数:

int[] answer = new int[input.length]; //create the answer array
String binary = "";
public void convert(input, answer){
    for(int i=input.length-1;i<=0;i--) //you want to start from the left end
    {
        int temp = input[i]/2; //int division, disregard decimal.
        answer[i] = temp;
        int remainder = input[i] - temp*2; //will be 1 or 0, carry over to the next digit
        if(i>0) //check if we are not at the last digit
            input[i-1] += 10*remainder;
        else
            binary = remainder+binary; //add new bit to the left of the binary
    }
    if(answer_is_smaller_than_2) //check if we have 0 or 1 left, maybe just go through the answer array
       binary = answer[0]+binary;// add the last digit to binary string. It is generally ok to have a 0 in the beginning, but you can easily do a check and remove the 0
    else convert(answer, new int[answer.length]); //keep dividing

}

很抱歉,递归不是很完美。我是在跑步时写的。有关将十进制转换为二进制的详细信息:http://www.wikihow.com/Convert-from-Decimal-to-Binary希望这有帮助:)

郑旭
2023-03-14

从字符串中创建一个BigInteger并调用toByteArray。

 类似资料:
  • 我试图从标准输入中读取一些非常大的数字,并将它们相加。 然而,要添加到BigInteger,我需要使用

  • 我有一个字符串数组,表示二进制数(不带前导零),我想将其转换为相应的10进制数。考虑: 最好的方式是什么?我一直在探索java。lang.number.*没有找到直接的转换方法<代码>整数。parseInt(b)生成一个等于字符串的整数。。。e、 1001变成了1001而不是9。。。而且似乎不包括输出基的参数转换方向错误。我怀疑我需要进行多步转换,但似乎找不到方法或子类的正确组合。我也不确定前导零

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

  • 我有一个表,它有一个主键列“gid”,它的类型是“Integer NOT NULL”。我想把它转换成“Serial NOT NULL”,这样我就可以在这个表中插入一些值。我使用以下命令将其转换为串行: 此命令将整数转换为串行。但是,当我在表中输入一些数据时,出现了以下错误: 错误:重复的键值违反唯一约束“pk_测试”。 请帮我解决这个问题。是否有其他方法将整数转换为串行?

  • 问题内容: 我有一个很大的二进制字符串“ 101101110 …”,并且正在尝试将其存储到字节数组中。最好的方法是什么? 可以说我有largeString =“ 0100111010111011011011000000001000110101” 我正在寻找的结果: [78,187,96,17,21] 01001110 10111011 01100000 00010001 10101 我试过的 但是

  • 本文向大家介绍如何将小数转换为二进制?,包括了如何将小数转换为二进制?的使用技巧和注意事项,需要的朋友参考一下 十进制数是公众最熟悉的数字系统。它是基数10,只有10个符号-0、1、2、3、4、5、6、7、8和9。而二进制数是数字系统,网络和计算机专业人员最熟悉的数字系统。它是基数2,只有2个符号:0和1,这些数字可以分别用off和on表示。 从十进制转换为二进制数字系统 有多种直接或间接的方法可