Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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中,如何将字节转换成二进制数而不是字符串_Java - Fatal编程技术网

在java中,如何将字节转换成二进制数而不是字符串

在java中,如何将字节转换成二进制数而不是字符串,java,Java,当我要打印字节的二进制数时,我必须执行以下操作: byte byte1 = 16; String byteString = Integer.toBinaryString(byte1); System.out.println(byteString); 这使字节变成字符串,但当我试图将其解析成字节时,它又将其转换成以10为基数的数字,有没有办法将字节转换成二进制数字字节,而不是以10为基数的字节?我想这样做,如果你打印字节,它会打印二进制文件。你必须告诉它每次打印二进制文件吗?这是怎么回事: by

当我要打印字节的二进制数时,我必须执行以下操作:

byte byte1 = 16;
String byteString = Integer.toBinaryString(byte1);
System.out.println(byteString);
这使字节变成字符串,但当我试图将其解析成字节时,它又将其转换成以10为基数的数字,有没有办法将字节转换成二进制数字字节,而不是以10为基数的字节?我想这样做,如果你打印字节,它会打印二进制文件。你必须告诉它每次打印二进制文件吗?

这是怎么回事:

byte byte1 = 76;
StringBuilder byteString = new StringBuilder();
for (int i = 128; i > 0; i /= 2) {
    if ((byte1 & i) == 0) {
        byteString.append(0);
    } else {
        byteString.append(1);
    }
}
System.out.println(byteString);
那么这个呢:

byte byte1 = 76;
StringBuilder byteString = new StringBuilder();
for (int i = 128; i > 0; i /= 2) {
    if ((byte1 & i) == 0) {
        byteString.append(0);
    } else {
        byteString.append(1);
    }
}
System.out.println(byteString);

那么
Byte.parseByte(s,基数)


那么
Byte.parseByte(s,基数)

我想知道是否有办法让它每次打印字节的二进制表示形式,而不是每次都必须将其转换为二进制字符串,并且不需要打印新的字符串变量

您不需要
字符串
变量,因为您可以这样做:

System.out.println(Integer.toBinaryString(a));
但是,如果不使用
tobinarysting
,就无法自动进行转换。如果这段代码太长,您可以创建这样一个简单的方法

public static void printInBinary(int a) {
    System.out.println(Integer.toBinaryString(a));
}
正如您所确定的,如果您需要重复打印相同的数字,这两种方法都会导致不必要的工作,但您不必担心这一点。担心这样的事情是浪费时间(99%的时间)

我想知道是否有办法让它每次打印字节的二进制表示形式,而不是每次都必须将其转换为二进制字符串,并且不需要打印新的字符串变量

您不需要
字符串
变量,因为您可以这样做:

System.out.println(Integer.toBinaryString(a));
但是,如果不使用
tobinarysting
,就无法自动进行转换。如果这段代码太长,您可以创建这样一个简单的方法

public static void printInBinary(int a) {
    System.out.println(Integer.toBinaryString(a));
}
正如您所确定的,如果您需要重复打印相同的数字,这两种方法都会导致不必要的工作,但您不必担心这一点。担心这样的事情是浪费时间(99%的时间)

因为程序员的效率

在物理层面上,计算机既没有“二进制”数字也没有“十进制”数字的概念(我的意思是,以“110011”或“123”的形式)。里面全是电脉冲。当你在屏幕上打印一个数字时,它总是要以这样或那样的方式将“脉冲”转换成屏幕上的字符

当数字作为“数字”存储在内存中时,它与十进制或二进制表示都不兼容。将“数字”转换为任何类型的“字符串”都需要大致相同的计算能力

假设您有以下代码:

byte byte1 = 16;
String byteString = Integer.toBinaryString(byte1);
System.out.println(byteString);
System.out.println(byte1);
事实上,cpu执行的操作如下所示:

String byteString = Integer.toBinaryString(byte1);
String decimalString = toDecimalString(byte1);
System.out.println(byteString);
System.out.println(decimalString);
也就是说,除非您已经将数字保存为字符串,否则您的CPU必须做额外的工作来将其转换为十进制、十六进制或二进制表示形式。只是默认情况下选择了十进制表示。而且,对于一个变量或整个应用程序,无法以某种方式“切换”此默认表示形式

因此,每当您希望在屏幕上以字符形式打印任何数字类型的变量时,都需要将其转换为二进制

因为程序员的效率

在物理层面上,计算机既没有“二进制”数字也没有“十进制”数字的概念(我的意思是,以“110011”或“123”的形式)。里面全是电脉冲。当你在屏幕上打印一个数字时,它总是要以这样或那样的方式将“脉冲”转换成屏幕上的字符

当数字作为“数字”存储在内存中时,它与十进制或二进制表示都不兼容。将“数字”转换为任何类型的“字符串”都需要大致相同的计算能力

假设您有以下代码:

byte byte1 = 16;
String byteString = Integer.toBinaryString(byte1);
System.out.println(byteString);
System.out.println(byte1);
事实上,cpu执行的操作如下所示:

String byteString = Integer.toBinaryString(byte1);
String decimalString = toDecimalString(byte1);
System.out.println(byteString);
System.out.println(decimalString);
也就是说,除非您已经将数字保存为字符串,否则您的CPU必须做额外的工作来将其转换为十进制、十六进制或二进制表示形式。只是默认情况下选择了十进制表示。而且,对于一个变量或整个应用程序,无法以某种方式“切换”此默认表示形式


因此,每当您希望在屏幕上以字符形式打印任何数字类型的变量时,您都需要将其转换为二进制。

16只是一种人类可读的十进制表示形式,但在系统中,它已经是一个“二进制数字节”,没有任何转换。“可能会使程序运行变慢”预优化是一件坏事。你为什么想要这个功能呢?听起来像是一个例子,如果你想知道一个字节在二进制中是什么样子的,你可以做
Integer.tobinarysting()
。似乎没有必要使用
字符串
,但即使您将
16
转换为
int
10000
,当您尝试打印它时,它也会转换为
字符串
。@codersarecool为什么需要创建新的字符串变量
System.out.println(Integer.toBinaryString(byte1))可以。打印的任何内容都是字符串。你打印文本,对吗?那么为什么使用
toBinaryString()
是一个问题呢?16只是一个人类可读的十进制表示,但在系统中,它已经是一个“二进制数字节”,没有任何转换。“可能会使程序运行变慢”预优化是一个邪恶的东西。你为什么想要这个功能呢?听起来像是一个例子,如果你想知道一个字节在二进制中是什么样子的,你可以做
Integer.tobinarysting()
。似乎没有必要使用
字符串
,但即使您将
16
转换为
int
10000
,当您尝试打印它时,它也会转换为
字符串
。@code