用Java打印二进制值

时间:2012-11-18 17:18:07

标签: java

为什么在我们尝试分别打印89时,此java程序的输出为010011

public class Test{
   public static void main(String str[]){ 
      System.out.println(011); 
   }
}

是什么原因?

4 个答案:

答案 0 :(得分:6)

010是八进制基数10的解释,8。类似地011解释11 octal base 9中的integer

0之前添加octal base,会在0x10中进行解释。

同样,您可以尝试打印hexadecimal,这是16表示,并会将{{1}}作为输出。

答案 1 :(得分:6)

在Java中,从整数到字符串的默认转换是基数10.如果需要不同的基数,则必须明确指定它。例如,您可以使用以下方法将整数值转换为二进制字符串:

Integer.toString(value, 2);

同样,您可以使用以下命令将其转换为八进制值:

Integer.toString(value, 8);

除非值为0,否则字符串将不具有前导零。如果你想要一个领先的0,你必须先加上它。或者,您可以使用String.format()对其进行格式化,并为转换后的字符串指定零填充和最小宽度:

String.format("%1$03o", value); // the "1$ in the format string is optional here

P.S。从你的问题不清楚确切的问题是什么。听起来你正在从一个整数值转换为一个字符串。但是,如果问题是您正在尝试读取字符串“011”并且它被读取为整数值9,这是因为前导0强制解释为八进制值。您必须将其作为String值读取,然后显式指定从字符串到整数的转换为基数10:

int val = Integer.valueOf(stringValue, 10);

答案 2 :(得分:1)

- 如果要将整数转换为二进制数据,请使用toBinaryString()方法。

<强>例如

int i = 8;
Integer.toBinaryString(i);

答案 3 :(得分:0)

BEC。当你用0开始你的数字时,JVM将数字从十进制转换为八进制,这就是全部;)
“十进制11 =八进制9” 十进制0 1 2 3 4 5 6 7 8 9 八进制0 1 2 3 4 5 6 7 10 11