Bytes是啥概念?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bytes是啥概念?相关的知识,希望对你有一定的参考价值。
Bytes是字节的意思。1个汉字=2Bytes,1 KB = 1024 bytes ,1 MB = 1024 KB ,1 GB = 1024 MB 参考技术A 字节是由8个位所组成,可代表一个字符(A~Z)、数字(0~9)、或符号(,.?!%&+-*/),是内存储存数据的基本单位。1 byte = 8 bit
1 KB = 1024 bytes =210 bytes
1 MB = 1024 KB = 220 bytes
1 GB = 1024 MB = 230 bytes
语句“out |= (in & 0x7F) << (bytes++ * 7);”是啥意思?在java中是啥意思?
【中文标题】语句“out |= (in & 0x7F) << (bytes++ * 7);”是啥意思?在java中是啥意思?【英文标题】:What does the statement "out |= ( in & 0x7F ) << ( bytes++ * 7 );" mean in java?语句“out |= (in & 0x7F) << (bytes++ * 7);”是什么意思?在java中是什么意思? 【发布时间】:2014-04-07 23:33:08 【问题描述】:当我看到他们的 VarInt 读取代码以读取数据包长度时,我正在查看 Minecraft 的内部数据包处理。作为一个没有任何Java课程的Java开发人员,当我看到out |= ( in & 0x7F ) << ( bytes++ * 7 );
的声明时,我感到很困惑。有人可以向我解释一下吗?提前致谢!
如果您想要完整的代码,只需检查 BungeeCord 的 Github https://github.com/SpigotMC/BungeeCord/blob/master/protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java#L70 上的 readVarInt 函数即可。
【问题讨论】:
这意味着有人正在编写神秘代码。 你认为这意味着什么?你有调查过吗? 是的,阅读起来并不难,如果你一块一块地看的话。 (但是对于新手来说可能并不明显,即使在逐段解释之后,它只是简单地获取一系列字节并将每个字节的低 7 位连接在一起(假设in
是从数组或每次迭代中重新加载的)。)
哦,*
是乘法运算符。
【参考方案1】:
我没有查看您包含的链接,但我希望在循环中调用此行,以将存储为 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
【讨论】:
以上是关于Bytes是啥概念?的主要内容,如果未能解决你的问题,请参考以下文章