下面是 Java 中 Keytab 實現的源代碼。此片段從密鑰表文件中讀取密鑰版本。我無法理解這是如何工作的。為什么要進行按位與和左移運算?我的代碼調用了什么:KeyTab keytab = KeyTab.getInstance(keytabFile); // passing keytab file location. 該文件為二進制格式。KeyTabInputStream 讀取數據。 private void load(KeyTabInputStream var1) throws IOException, RealmException { this.entries.clear(); **this.kt_vno = var1.readVersion();** if (this.kt_vno == 1281) { var1.setNativeByteOrder(); } boolean var2 = false; while(var1.available() > 0) { int var4 = var1.readEntryLength(); KeyTabEntry var3 = var1.readEntry(var4, this.kt_vno); if (DEBUG) { System.out.println(">>> KeyTab: load() entry length: " + var4 + "; type: " + (var3 != null ? var3.keyType : 0)); } if (var3 != null) { this.entries.addElement(var3); } } } public int readVersion() throws IOException { int var1 = (this.read() & 255) << 8; return var1 | this.read() & 255; }
1 回答

烙印99
TA貢獻1829條經驗 獲得超13個贊
this.read()
大概返回 8 個“有趣”位,因為& 255
“檢索”僅最后 8 位,將其移動 8 位意味著現在第 9-16 位保存數據。
然后執行另一次讀取 +&
再次獲得 8 位,|
通過之前步驟的移位位,您現在有一個int
設置了 16 個相關位的位:位 1-8 保存第二次讀取的結果,而位 9-16 保存位第一次閱讀。
添加回答
舉報
0/150
提交
取消