gpt4 book ai didi

java - 语句 "out |= ( in & 0x7F ) << ( bytes++ * 7 );"在java中是什么意思?

转载 作者:行者123 更新时间:2023-11-30 09:09:44 25 4
gpt4 key购买 nike

当我看到他们的 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 - 语句 "out |= ( in & 0x7F ) << ( bytes++ * 7 );"在java中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22924979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com