下面是 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
提交
取消