Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将int转换为二进制字符串表示形式?_Java_String_Binary_Int - Fatal编程技术网

在Java中将int转换为二进制字符串表示形式?

在Java中将int转换为二进制字符串表示形式?,java,string,binary,int,Java,String,Binary,Int,在Java中,将int转换为二进制字符串表示的最佳方法(理想情况下,最简单)是什么 例如,假设int是156。它的二进制字符串表示形式为“10011100”。还有一种方法,如果有一天您的代码可能会处理除2(二进制)以外的基数,那么这种方法更合适。请记住,此方法只提供整数i的无符号表示,如果它是负数,它将在前面加上负号。它不会使用2的补码。还有一种方法-通过使用,可以在第二个参数指定的基数(八进制-8,十六进制-16,二进制-2)中获得第一个参数i的字符串表示形式 Integer.toStrin

在Java中,将int转换为二进制字符串表示的最佳方法(理想情况下,最简单)是什么

例如,假设int是156。它的二进制字符串表示形式为“10011100”。

还有一种方法,如果有一天您的代码可能会处理除2(二进制)以外的基数,那么这种方法更合适。请记住,此方法只提供整数i的无符号表示,如果它是负数,它将在前面加上负号。它不会使用2的补码。

还有一种方法-通过使用,可以在第二个参数指定的
基数(八进制-8,十六进制-16,二进制-2)
中获得第一个参数
i
的字符串表示形式

 Integer.toString(i, radix)
范例_

输出_

公共类主{
公共静态字符串toBinary(int n,int l)引发异常{
双功率=数学功率(2,l);
StringBuilder二进制文件=新的StringBuilder();
如果(功率=0;shift--){
int位=(n>>移位)&1;
如果(位==1){
二元。附加(“1”);
}否则{
二进制。追加(“0”);
}
}
返回binary.toString();
}
公共静态void main(字符串[]args)引发异常{
System.out.println(“binary=“+toBinary(7,4));
System.out.println(“binary=“+Integer.toString(7,2));
}
}

这是我几分钟前写的东西,只是在胡闹。希望有帮助

public class Main {

public static void main(String[] args) {

    ArrayList<Integer> powers = new ArrayList<Integer>();
    ArrayList<Integer> binaryStore = new ArrayList<Integer>();

    powers.add(128);
    powers.add(64);
    powers.add(32);
    powers.add(16);
    powers.add(8);
    powers.add(4);
    powers.add(2);
    powers.add(1);

    Scanner sc = new Scanner(System.in);
    System.out.println("Welcome to Paden9000 binary converter. Please enter an integer you wish to convert: ");
    int input = sc.nextInt();
    int printableInput = input;

    for (int i : powers) {
        if (input < i) {
            binaryStore.add(0);     
        } else {
            input = input - i;
            binaryStore.add(1);             
        }           
    }

    String newString= binaryStore.toString();
    String finalOutput = newString.replace("[", "")
            .replace(" ", "")
            .replace("]", "")
            .replace(",", "");

    System.out.println("Integer value: " + printableInput + "\nBinary value: " + finalOutput);
    sc.close();
}   
公共类主{
公共静态void main(字符串[]args){
ArrayList powers=新的ArrayList();
ArrayList binaryStore=新的ArrayList();
增加(128);
增加(64);
加入(32);
加入(16);
加入(8);
加入第(4)款;
加入第(2)款;
加入第(1)款;
扫描仪sc=新的扫描仪(System.in);
System.out.println(“欢迎使用Paden9000二进制转换器。请输入要转换的整数:”;
int input=sc.nextInt();
int printableInput=输入;
用于(int i:电源){
如果(输入

}使用内置功能:

String binaryNum = Integer.toBinaryString(int num);
如果不想使用内置函数将int转换为二进制,也可以执行以下操作:

import java.util.*;
public class IntToBinary {
    public static void main(String[] args) {
        Scanner d = new Scanner(System.in);
        int n;
        n = d.nextInt();
        StringBuilder sb = new StringBuilder();
        while(n > 0){
        int r = n%2;
        sb.append(r);
        n = n/2;
        }
        System.out.println(sb.reverse());        
    }
}

将整数转换为二进制:

import java.util.Scanner;

public class IntegerToBinary {

    public static void main(String[] args) {

        Scanner input = new Scanner( System.in );

        System.out.println("Enter Integer: ");
        String integerString =input.nextLine();

        System.out.println("Binary Number: "+Integer.toBinaryString(Integer.parseInt(integerString)));
    }

}
输出:

import java.util.Scanner;

public class IntegerToBinary {

    public static void main(String[] args) {

        Scanner input = new Scanner( System.in );

        System.out.println("Enter Integer: ");
        String integerString =input.nextLine();

        System.out.println("Binary Number: "+Integer.toBinaryString(Integer.parseInt(integerString)));
    }

}
输入整数:

十,


二进制数:1010最简单的方法是检查数字是否为奇数。如果是,根据定义,其最右边的二进制数将是“1”(2^0)。确定之后,我们将数字右移,并使用递归检查相同的值

@Test
public void shouldPrintBinary() {
    StringBuilder sb = new StringBuilder();
    convert(1234, sb);
}

private void convert(int n, StringBuilder sb) {

    if (n > 0) {
        sb.append(n % 2);
        convert(n >> 1, sb);
    } else {
        System.out.println(sb.reverse().toString());
    }
}

这应该是非常简单的,比如:

public static String toBinary(int number){
    StringBuilder sb = new StringBuilder();

    if(number == 0)
        return "0";
    while(number>=1){
        sb.append(number%2);
        number = number / 2;
    }

    return sb.reverse().toString();

}

这可以用伪代码表示为:

while(n > 0):
    remainder = n%2;
    n = n/2;
    Insert remainder to front of a list or push onto a stack

Print list or stack

这里是我的方法,它有点说服力,字节数是固定的

private void printByte(int value) {
String currentBinary = Integer.toBinaryString(256 + value);
System.out.println(currentBinary.substring(currentBinary.length() - 8));
}

public int binaryToInteger(String binary) {
char[] numbers = binary.toCharArray();
int result = 0;
for(int i=numbers.length - 1; i>=0; i--)
  if(numbers[i]=='1')
    result += Math.pow(2, (numbers.length-i - 1));
return result;
}

您还可以使用while循环将int转换为二进制。像这样,

import java.util.Scanner;

public class IntegerToBinary
{
   public static void main(String[] args)
   {
      int num;
      String str = "";
      Scanner sc = new Scanner(System.in);
      System.out.print("Please enter the a number : ");
      num = sc.nextInt();
      while(num > 0)
      {
         int y = num % 2;
         str = y + str;
         num = num / 2;
      }
      System.out.println("The binary conversion is : " + str);
      sc.close();
   }
}
来源和参考-示例。

您应该真正使用(如上所示),但如果出于某种原因您想要自己的:

// Like Integer.toBinaryString, but always returns 32 chars
public static String asBitString(int value) {
  final char[] buf = new char[32];
  for (int i = 31; i >= 0; i--) {
    buf[31 - i] = ((1 << i) & value) == 0 ? '0' : '1';
  }
  return new String(buf);
}
//与Integer.tobinarysting类似,但始终返回32个字符
公共静态字符串asBitString(int值){
最终字符[]buf=新字符[32];
对于(int i=31;i>=0;i--){

buf[31-i]=((1使用位移位稍微快一点

public static String convertDecimalToBinary(int N) {

    StringBuilder binary = new StringBuilder(32);

    while (N > 0 ) {
        binary.append( N % 2 );
        N >>= 1;
     }

    return binary.reverse().toString();

}

这很方便!对于long有类似的方法吗?@ttreat31:我的意思并不是说这听起来很刺耳,但是你真的应该有文档(在本例中是JavaDoc)在编程时随时可用。你不必问:它们的long方法是否类似;你应该查找它而不是键入注释。@杰克有没有办法获得固定位数的二进制字符串,比如8位二进制中的十进制8,000010000results binary=0111 binary=111String hexString=String、 格式(“%2s”,Integer.toHexString(h)).replace(“”,'0');过度促销特定产品/资源(我在此处删除了该产品/资源)可能会被社区视为垃圾邮件。请看,特别是最后一节:避免公开的自我推销。您可能也对此感兴趣。如果您确实不想使用内置方法,我认为这是一种非常优雅的手动方式。此代码不适用于负整数
private void printByte(int value) {
String currentBinary = Integer.toBinaryString(256 + value);
System.out.println(currentBinary.substring(currentBinary.length() - 8));
}

public int binaryToInteger(String binary) {
char[] numbers = binary.toCharArray();
int result = 0;
for(int i=numbers.length - 1; i>=0; i--)
  if(numbers[i]=='1')
    result += Math.pow(2, (numbers.length-i - 1));
return result;
}
import java.util.Scanner;

public class IntegerToBinary
{
   public static void main(String[] args)
   {
      int num;
      String str = "";
      Scanner sc = new Scanner(System.in);
      System.out.print("Please enter the a number : ");
      num = sc.nextInt();
      while(num > 0)
      {
         int y = num % 2;
         str = y + str;
         num = num / 2;
      }
      System.out.println("The binary conversion is : " + str);
      sc.close();
   }
}
// Like Integer.toBinaryString, but always returns 32 chars
public static String asBitString(int value) {
  final char[] buf = new char[32];
  for (int i = 31; i >= 0; i--) {
    buf[31 - i] = ((1 << i) & value) == 0 ? '0' : '1';
  }
  return new String(buf);
}
public static String convertDecimalToBinary(int N) {

    StringBuilder binary = new StringBuilder(32);

    while (N > 0 ) {
        binary.append( N % 2 );
        N >>= 1;
     }

    return binary.reverse().toString();

}
public class BinaryConverter {

    public static String binaryConverter(int number) {
        String binary = "";
        if (number == 1){
            binary = "1";
            return binary;
        }
        if (number == 0){
            binary = "0";
            return binary;
        }
        if (number > 1) {
            String i = Integer.toString(number % 2);

            binary = binary + i;
            binaryConverter(number/2);
        }
        return binary;
    }
}