1. 代碼
import java.io.DataInputStream; import java.io.IOException; public class Test { public static void main(String[] args) { System.out.println("請輸入數字:"); DataInputStream dis = new DataInputStream(System.in); int x = 0; try { x = dis.readInt(); System.out.println(x); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
控制台輸入 : 12並回車
控制台打印: 825363722
2. 解釋
49*2^24 + 50*2^16 + 13*2^8 + 10 = 825363722
在控制台 輸入12, 其實輸入的是->
字符'1'、字符'2'、回車、換行
對應的ASCII碼是 49 50 13 10
Int類型是4個字節的 , 所以 readInt()從流裡讀出4個字節做位移運算
這裡存在一個把字符串二進制轉換成整型的問題。