当我看到他们的 VarInt 读取代码来读取数据包长度时,我正在查看 Minecraft 的内部数据包处理。作为一个没有任何java类(class)的java开发人员,当我看到声明out |= ( in & 0x7F ) << ( bytes++ * 7 );
时我很困惑。有人可以向我解释一下吗?提前致谢!
如果你想要完整的代码,只需检查 BungeeCord 的 Github 上的 readVarInt 函数 https://github.com/SpigotMC/BungeeCord/blob/master/protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java#L70 .
最佳答案
我没有查看您包含的链接,但我希望在循环中调用此行,以将存储为 7 位值集合的数字转换回 int 或 long。
您给出的行可以扩展为:
int value = in & 0x7F; // Grab 7 bits of data from "in"
int shift = bytes * 7; // Calculate shift amount based on byte index
bytes = bytes+1; // Increment byte index (from bytes++)
out = out | (value << shift); // Shift value and OR into output integer/long
关于java - java中的 "out |= ( in & 0x7F ) << ( bytes++ * 7 );"语句是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22924979/