问题描述
我读到字节输出流的输出时仅使用低阶8位,那么为什么我得到5? 另外,为什么我没有得到65的二进制或十六进制格式?
如果删除开头的2个零,并将b的值设为65,则得到“ A”作为答案,但是为什么通过放置开头的2个零却没有得到答案,而是“ 5”?
另外,为什么我以字符而不是以二进制格式获取答案,因为“ out”是Byte OutputStream
对象,应该以字节写?
public static void main(String[] args) {
int b = 0065;
System.out.write(b);
System.out.flush();
}
所需的“ A”,实际为5?
另外,需要0100 0001
。
1楼
静电场out
类java.lang.System
具有类型java.io.PrintStream
。
类PrintStream
有几个write()
方法。
在您的代码中,您传递给方法write()
是int
,因此方法invokde是write(int)
。
您正在为本地变量b
分配数字文字。
在Java中,以零(0)开头的数字文字表示一个八进制数字,而八进制的65是十进制的53(五十三),而53是数字5(五)的ASCII码。
供您参考,类java.lang.Integer
具有静态方法toBinaryString()
。
我建议您查看该方法的javadoc。
2楼
public class StackOverFlow{
public static void main(String []args){
int x = 0065;// in java when you append zero like 011 or 0023 its take as octal number,when you print it will convert to decimal
System.out.println(x); // 0065 is octal value when you convert to decimal it will be 53 and in hexa 35
int y = 056;//octal value
System.out.println(y); // Output:46 decimal value
}
}
3楼
由于0065
是八进制十进制53
十六进制0x35
的ASCII字符5
。